<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>Navo Portable Library: 单端线形序表</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body onload='searchBox.OnSelectItem(0);'>
<!-- 制作者 Doxygen 1.7.3 -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
--></script>
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">Navo Portable Library&#160;<span id="projectnumber">Ver 1.0.20120827</span></div>
   <div id="projectbrief">Provides generic platform independent facilities.</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>首页</span></a></li>
      <li><a href="modules.html"><span>模块</span></a></li>
      <li><a href="annotated.html"><span>数据结构</span></a></li>
      <li><a href="files.html"><span>文件</span></a></li>
      <li id="searchli">
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="搜索" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
</div>
<div class="header">
  <div class="summary">
<a href="#define-members">宏定义</a> &#124;
<a href="#func-members">函数</a>  </div>
  <div class="headertitle">
<h1>单端线形序表</h1>  </div>
<div class="ingroups"><a class="el" href="group___xE9_xA1_xBA_xE5_xBA_x8F_xE8_xA1_xA8.html">顺序表</a></div></div>
<div class="contents">
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="define-members"></a>
宏定义</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga7a044ba9003ba05a3de2cea88db65e07">slseq_iter</a>(type)&#160;&#160;&#160;type *</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">定义type类型迭代器  <a href="#ga7a044ba9003ba05a3de2cea88db65e07"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gab7b8f6f20db0f3e5681fd2184b1ae60c">slseq_head</a>(type)&#160;&#160;&#160;struct { type * first; type * last; type * end; }</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">type类型表头  <a href="#gab7b8f6f20db0f3e5681fd2184b1ae60c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga83c98cc4a910b1fce204a9dd409383fb">slseq</a>&#160;&#160;&#160;slseq_head</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">同slseq_head  <a href="#ga83c98cc4a910b1fce204a9dd409383fb"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga72020d78ab6e8221b1fe395153e0f5ed">SLSEQ_HEAD</a>(type, name, arr)&#160;&#160;&#160;slseq_head(type) name = {arr, arr, &amp;arr[count_of(arr)]}</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">定义一个名为name的表头，并对其初始化  <a href="#ga72020d78ab6e8221b1fe395153e0f5ed"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gabc7ae76112da39cad3a490ffe29a36d2">SLSEQ</a>&#160;&#160;&#160;SLSEQ_HEAD</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">同SLSEQ_HEAD  <a href="#gabc7ae76112da39cad3a490ffe29a36d2"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gadc091f35bd93153cb4a60cdb0a48abef">slseq_pr1</a>(type)&#160;&#160;&#160;int (*)(type *)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">单参数回调函数指针类型  <a href="#gadc091f35bd93153cb4a60cdb0a48abef"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gac263dee4595a10b58e55bf7e58881607">slseq_pr2</a>(type)&#160;&#160;&#160;int (*)(type *, type *)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">双参数回调函数指针类型  <a href="#gac263dee4595a10b58e55bf7e58881607"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga69f3c0efc73d393c1748ca7d65860529"></a><!-- doxytag: member="单端线形序表::SLSEQ_CHECK_PASS" ref="ga69f3c0efc73d393c1748ca7d65860529" args="" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>SLSEQ_CHECK_PASS</b>&#160;&#160;&#160;0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gac9b83947eaf31182861214d1c0fc4f59"></a><!-- doxytag: member="单端线形序表::SLSEQ_CHECK_INVALID" ref="gac9b83947eaf31182861214d1c0fc4f59" args="" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>SLSEQ_CHECK_INVALID</b>&#160;&#160;&#160;1</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga8d9f54477f011072630f07b1b5a0aa50"></a><!-- doxytag: member="单端线形序表::SLSEQ_CHECK_OVERFLOW" ref="ga8d9f54477f011072630f07b1b5a0aa50" args="" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>SLSEQ_CHECK_OVERFLOW</b>&#160;&#160;&#160;2</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga9d1c44ede3c9a75c58319a77a6ec819a">slseq_check</a>(head)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">检查表  <a href="#ga9d1c44ede3c9a75c58319a77a6ec819a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga66ef4475adc758147d5aed6ea3056a4c">slseq_reset</a>(head, _first, _last, _end)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">重置表头  <a href="#ga66ef4475adc758147d5aed6ea3056a4c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga3c4ad339e4584531edbf83514aa543e5">slseq_init</a>(type, head, base, size)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">初始化表  <a href="#ga3c4ad339e4584531edbf83514aa543e5"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga0a2be500364de1117b7aeff8448a5c46">slseq_init_serial</a>(type, head, base, size, cnt)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">作为序列来初始化表  <a href="#ga0a2be500364de1117b7aeff8448a5c46"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga1d2ff5d1484cb5ee9d3f8c2e097e4ba6">SLSEQ_INIT</a>(type, head, arr)&#160;&#160;&#160;slseq_init(type, head, arr, count_of(arr))</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">初始化表  <a href="#ga1d2ff5d1484cb5ee9d3f8c2e097e4ba6"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga08213d0c7bcf381b466b18e3822c6934">SLSEQ_INIT_SERIAL</a>(type, head, arr, cnt)&#160;&#160;&#160;slseq_init_serial(type, head, arr, count_of(arr), cnt)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">初始化序列  <a href="#ga08213d0c7bcf381b466b18e3822c6934"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga307e2dd9b759efca6d7ce111828ce42f">slseq_clear</a>(head)&#160;&#160;&#160;((head)-&gt;last = (head)-&gt;first)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">清空表  <a href="#ga307e2dd9b759efca6d7ce111828ce42f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaaf7079f9b34aee3f8683bd952221280c">slseq_base</a>(head)&#160;&#160;&#160;((head)-&gt;first)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">获得表的缓存基址  <a href="#gaaf7079f9b34aee3f8683bd952221280c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga40c042a8aab0f3a3e2cbec1aa71be240">slseq_count</a>(head)&#160;&#160;&#160;((size_t)((head)-&gt;last - (head)-&gt;first))</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">获取表的节点总数  <a href="#ga40c042a8aab0f3a3e2cbec1aa71be240"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga9f5fe365d6658fe43e91a1928dbd3506">slseq_size</a>(head)&#160;&#160;&#160;((size_t)((head)-&gt;end - (head)-&gt;first))</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">获取表的缓存长度  <a href="#ga9f5fe365d6658fe43e91a1928dbd3506"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga9d0bfd9f99636d2a61fae233bba3a945">slseq_capacity</a>(head)&#160;&#160;&#160;slseq_size(head)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">获取表的节点容量  <a href="#ga9d0bfd9f99636d2a61fae233bba3a945"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga9eea604709265671b608b47938e1a376">slseq_remain</a>(head)&#160;&#160;&#160;((size_t)((head)-&gt;end - (head)-&gt;last))</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">获取表的剩余容量  <a href="#ga9eea604709265671b608b47938e1a376"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gae4268073051fcbb3e21b122065713cff">slseq_empty</a>(head)&#160;&#160;&#160;((head)-&gt;first &gt;= (head)-&gt;last)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">判断表是否为空  <a href="#gae4268073051fcbb3e21b122065713cff"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaa6bbfe2c0dca4dcf85c1a70990fe594c">slseq_full</a>(head)&#160;&#160;&#160;((head)-&gt;last &gt;= (head)-&gt;end)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">判断表是否已满  <a href="#gaa6bbfe2c0dca4dcf85c1a70990fe594c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga0489678a9321eb40db61f65de80ff96f">slseq_singular</a>(head)&#160;&#160;&#160;((head)-&gt;last == ((head)-&gt;first + 1))</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">判断表是否只有单个节点  <a href="#ga0489678a9321eb40db61f65de80ff96f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga64411d864a8c05dbf91c1ada3ba1f131">slseq_sortable</a>(head)&#160;&#160;&#160;((head)-&gt;last &gt; ((head)-&gt;first + 1))</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">判断表是否可以被排序  <a href="#ga64411d864a8c05dbf91c1ada3ba1f131"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaf13cef717587bc54d064f5d0b0766314">slseq_insertable</a>(head, cnt)&#160;&#160;&#160;((head)-&gt;end &gt;= ((head)-&gt;last + (cnt)))</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">判断表是否可以插入一定数量的节点  <a href="#gaf13cef717587bc54d064f5d0b0766314"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gafe64444f99f75fe1813b6a31a9c02297">slseq_serialable</a>(head)&#160;&#160;&#160;((head)-&gt;last &gt; (head)-&gt;first)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">判断表是否可以序列化  <a href="#gafe64444f99f75fe1813b6a31a9c02297"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gad1717496486cf96efa2b49bac7b65fcb">slseq_copyable</a>(dst, src)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">判断源表是否可以深拷贝到目标表  <a href="#gad1717496486cf96efa2b49bac7b65fcb"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gae27fe82da920e5b073e27f8e5ed3c69c">slseq_at</a>(head, index)&#160;&#160;&#160;((head)-&gt;first + (index))</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">根据正向索引获取迭代器  <a href="#gae27fe82da920e5b073e27f8e5ed3c69c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga3c6e3aa9351796900e0d28dce2988f45">slseq_reverse_at</a>(head, index)&#160;&#160;&#160;((head)-&gt;last - ((index) + 1))</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">根据逆向索引获取迭代器  <a href="#ga3c6e3aa9351796900e0d28dce2988f45"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga1861e997fcddc32c22f346db83f6a28e">slseq_index_of</a>(head, itr)&#160;&#160;&#160;((itr) - (head)-&gt;first)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">获取迭代器对应的正向索引  <a href="#ga1861e997fcddc32c22f346db83f6a28e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga92b2525c6ccdee41ee4b90fa5fcfeaa3">slseq_reverse_index_of</a>(head, itr)&#160;&#160;&#160;((head)-&gt;last - ((itr) + 1))</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">获取迭代器对应的逆向索引  <a href="#ga92b2525c6ccdee41ee4b90fa5fcfeaa3"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga67e3a970b40b8bd19b2882cf840e764b">slseq_exist</a>(head, itr)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">判断迭代器对应的节点是否存在于表中  <a href="#ga67e3a970b40b8bd19b2882cf840e764b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaaad5b820f6d275327a9fa2a798f44fff">slseq_distance</a>(first, last)&#160;&#160;&#160;((size_t)((last) - (first)) + 1)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">计算两个节点的迭代距离  <a href="#gaaad5b820f6d275327a9fa2a798f44fff"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga7c03b922ae6e488f1bf8c46b58c9ef2a">slseq_insert</a>(type, head, pos, newly)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">在指定位置插入节点  <a href="#ga7c03b922ae6e488f1bf8c46b58c9ef2a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga5df72a88d5d650cc39071cbe6cb0622c">slseq_erase</a>(type, head, pos)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">删除指定位置的节点  <a href="#ga5df72a88d5d650cc39071cbe6cb0622c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga1677c06cc848f559a4dcdc4405b33311">slseq_inserts</a>(type, head, pos, src, cnt)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">在指定位置连续插入多个节点  <a href="#ga1677c06cc848f559a4dcdc4405b33311"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaaf8c04109eb7af201387e220ab585a55">slseq_erases</a>(type, head, begin, end)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">连续删除指定位置的多个节点  <a href="#gaaf8c04109eb7af201387e220ab585a55"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga5940c6a04d0980389745c1efa1aaa979">slseq_splice</a>(type, dst, pos, src, _first, _last)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">移接一段序列[first, last]到目标位置。 这可以发生在同一个序表中，也可以在不同的序表之间  <a href="#ga5940c6a04d0980389745c1efa1aaa979"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gae6d218d7f4e92811ca480f52d698e9fe">slseq_appends</a>(type, head, src, cnt)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">在表尾添加多个节点  <a href="#gae6d218d7f4e92811ca480f52d698e9fe"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga224d22084859961800f30a0607d7a7c2">slseq_append</a>(head, newly)&#160;&#160;&#160;(*((head)-&gt;last++) = (newly))</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">在表尾添加新节点  <a href="#ga224d22084859961800f30a0607d7a7c2"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga33999e7a0285c444ce27297e786e23af">slseq_copy</a>(type, dst, src)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">深拷贝源表的节点到目标表  <a href="#ga33999e7a0285c444ce27297e786e23af"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gae1494928c2cf16eb8b6975318f492f1c">slseq_push_back</a>(head)&#160;&#160;&#160;((head)-&gt;last++)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">获取指向表尾插入节点位置的迭代器  <a href="#gae1494928c2cf16eb8b6975318f492f1c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga2a34300fb1024bdb7a96c19c36f5af34">slseq_pop_back</a>(head)&#160;&#160;&#160;(--(head)-&gt;last)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">获取指向表尾节点位置的迭代器  <a href="#ga2a34300fb1024bdb7a96c19c36f5af34"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gae38030bc268572393c04e9721f8ff285">slseq_iter_replace</a>(victim, newly)&#160;&#160;&#160;(*(victim) = (newly))</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">用新节点替换目标节点  <a href="#gae38030bc268572393c04e9721f8ff285"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><b>__slseq_iter_swap</b>(type, a, b)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gae27918a0c5b158a22dee769f063921ae">slseq_iter_swap</a>(type, a, b)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">用新节点替换目标节点  <a href="#gae27918a0c5b158a22dee769f063921ae"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga155890eb273f29f74bac3143af5030d8">slseq_replace</a>(victim, newly)&#160;&#160;&#160;(*(victim) = *(newly))</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">用新表头替换目标表头  <a href="#ga155890eb273f29f74bac3143af5030d8"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga809343daf7d6e11e225b842b762078f3">slseq_swap</a>(type, a, b)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">交换两个表头  <a href="#ga809343daf7d6e11e225b842b762078f3"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gad934bf5c6108112fbaef444484c71c43">slseq_front</a>(head)&#160;&#160;&#160;((head)-&gt;first)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">得到表首节点  <a href="#gad934bf5c6108112fbaef444484c71c43"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gad58e7ccc25501ae4bfabbecb9321a313">slseq_back</a>(head)&#160;&#160;&#160;((head)-&gt;last - 1)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">得到表首节点  <a href="#gad58e7ccc25501ae4bfabbecb9321a313"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga2696503718b3292109d395da44c988b6">slseq_begin</a>(head)&#160;&#160;&#160;slseq_front(head)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">得到指向正向起始位置的迭代器  <a href="#ga2696503718b3292109d395da44c988b6"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga5b3212d3b18809e193c701f7c6fef755">slseq_end</a>(head)&#160;&#160;&#160;((head)-&gt;last)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">得到指向正向终止位置的迭代器  <a href="#ga5b3212d3b18809e193c701f7c6fef755"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga072a06523aa90f633d5668dbbe5c6817">slseq_end_of</a>(itr)&#160;&#160;&#160;((itr) + 1)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">得到指向当前节点的正向终止位置的迭代器  <a href="#ga072a06523aa90f633d5668dbbe5c6817"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gafcabee0dca463e6c33ecb77df3592abd">slseq_rbegin</a>(head)&#160;&#160;&#160;slseq_back(head)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">得到指向逆向起始位置的迭代器  <a href="#gafcabee0dca463e6c33ecb77df3592abd"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaaabcd8478811a31b7b50e8dcdcfad0ae">slseq_rend</a>(head)&#160;&#160;&#160;((head)-&gt;first - 1)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">得到指向逆向起始位置的迭代器  <a href="#gaaabcd8478811a31b7b50e8dcdcfad0ae"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga676a8e963b9b96901e3beb6951f4129c">slseq_rend_of</a>(itr)&#160;&#160;&#160;((itr) - 1)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">得到指向当前节点的逆向终止位置的迭代器  <a href="#ga676a8e963b9b96901e3beb6951f4129c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga8c8b52691001770ceeee02de73ce8202">slseq_next</a>(itr)&#160;&#160;&#160;((itr) + 1)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">获取当前节点的后继节点  <a href="#ga8c8b52691001770ceeee02de73ce8202"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaf6d12385b5949b487f1643a1207bffca">slseq_prev</a>(itr)&#160;&#160;&#160;((itr) - 1)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">获取当前节点的前驱节点  <a href="#gaf6d12385b5949b487f1643a1207bffca"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga2a644ab476a2a1180471a5770100a30a">slseq_advance</a>(cur, dist)&#160;&#160;&#160;((cur) + (dist))</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">给迭代器增加一段距离或减小一段距离  <a href="#ga2a644ab476a2a1180471a5770100a30a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga7746110512440a11fca7377f485d5e9e">SLSEQ_NOT_END</a>(itr, end)&#160;&#160;&#160;((itr) &lt; (end))</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">迭代结束条件  <a href="#ga7746110512440a11fca7377f485d5e9e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga52cfe1d31c72d01e1f94fa5cc629993d">SLSEQ_NOT_REND</a>(itr, rend)&#160;&#160;&#160;((itr) &gt; (rend))</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">逆向迭代结束条件  <a href="#ga52cfe1d31c72d01e1f94fa5cc629993d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga362a73c9e604923921dc578accf6dcc4">slseq_inc</a>(itr)&#160;&#160;&#160;(++(itr))</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">迭代器递增  <a href="#ga362a73c9e604923921dc578accf6dcc4"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga90c54c4552eba1e8b8b8e42421cc17dc">slseq_dec</a>(itr)&#160;&#160;&#160;(--(itr))</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">迭代器递减  <a href="#ga90c54c4552eba1e8b8b8e42421cc17dc"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga752433853f94de425cd69f8dedaa907f">slseq_add</a>(itr, cnt)&#160;&#160;&#160;((itr) += (cnt))</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">迭代器增加  <a href="#ga752433853f94de425cd69f8dedaa907f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga989d3cb91a502f095d5db846a1c91066">slseq_sub</a>(itr, cnt)&#160;&#160;&#160;((itr) -= (cnt))</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">迭代器减小  <a href="#ga989d3cb91a502f095d5db846a1c91066"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gafeb17b73be7582c8ff2b6913d8523edf">slseq_inc_later</a>(itr)&#160;&#160;&#160;((itr)++)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">迭代器后递增  <a href="#gafeb17b73be7582c8ff2b6913d8523edf"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gab775f9b4385a16da1e2f14a55ae4886d">slseq_dec_later</a>(itr)&#160;&#160;&#160;((itr)--)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">迭代器后递减  <a href="#gab775f9b4385a16da1e2f14a55ae4886d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaa3925356d203b514fde4d703707d9221">slseq_add_later</a>(itr, cnt)&#160;&#160;&#160;(slseq_add(itr, cnt) - (cnt))</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">迭代器后增加  <a href="#gaa3925356d203b514fde4d703707d9221"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga9fb3969b6bad526bbf0914940027326f">slseq_sub_later</a>(itr, cnt)&#160;&#160;&#160;(slseq_sub(itr, cnt) + (cnt))</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">迭代器后减少  <a href="#ga9fb3969b6bad526bbf0914940027326f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga24695fd9a3ffb4a0092e811be90fc3bd">slseq_foreach</a>(type, begin, end, fn)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">正向遍历begin到end的节点， 并为每一个节点调用回调函数或宏  <a href="#ga24695fd9a3ffb4a0092e811be90fc3bd"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaa5503fd583f692591ddac9230197a3f3">slseq_reverse_foreach</a>(type, rbegin, rend, fn)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">逆向遍历rbegin到rend的节点， 并为每一个节点调用回调函数或宏  <a href="#gaa5503fd583f692591ddac9230197a3f3"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga6feddc27636a8ccb83b1390213015f98">slseq_search</a>(type, begin, end, equal, var, res)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">顺序查找区域内的指定节点  <a href="#ga6feddc27636a8ccb83b1390213015f98"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaef8a9c932289d1c849c301cd60be07f9">slseq_binary_search</a>(type, begin, end, greater, var, res)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">二分查找区域内的指定节点  <a href="#gaef8a9c932289d1c849c301cd60be07f9"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gac2bad4a0dbf36abc1f97860ac4dff4d1">slseq_vbegin</a>(head)&#160;&#160;&#160;slseq_begin(head)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">得到正反转的起始迭代器  <a href="#gac2bad4a0dbf36abc1f97860ac4dff4d1"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gab671555a3c9684029f9c757460a9c8de">slseq_rvbegin</a>(head)&#160;&#160;&#160;slseq_rbegin(head)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">得到逆反转的起始迭代器  <a href="#gab671555a3c9684029f9c757460a9c8de"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaacc509b14a99b31e04d044a67306f204">slseq_vend</a>(head)&#160;&#160;&#160;((head)-&gt;first + (slseq_count(head) &gt;&gt; 1))</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">得到用于反转的终止位置的迭代器  <a href="#gaacc509b14a99b31e04d044a67306f204"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gad41abbfab61285f8f91549d678abf1d6"></a><!-- doxytag: member="单端线形序表::slseq_vnext" ref="gad41abbfab61285f8f91549d678abf1d6" args="(i, r)" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>slseq_vnext</b>(i, r)&#160;&#160;&#160;do { ++(i); --(r); } while (0)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gab8a2257cf059d72e930581d659687695">slseq_vswap</a>(type, i, r)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">交换反转操作  <a href="#gab8a2257cf059d72e930581d659687695"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaac1b58126ec18227b09448b593659398">slseq_reverse</a>(type, head)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">反转表  <a href="#gaac1b58126ec18227b09448b593659398"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga2dc4fe12273073902e09f5008be43d34">slseq_fill</a>(type, begin, end, val)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">用val填充区域  <a href="#ga2dc4fe12273073902e09f5008be43d34"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gae243693efbc736ed5ad1e42361dc1bdd">slseq_generate</a>(type, begin, end, generator)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">使用输入产生器来填充区域  <a href="#gae243693efbc736ed5ad1e42361dc1bdd"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga5f24e9af484f1657f09fb61b7ea20b6d">slseq_is_heap</a>(type, begin, end, greater, res)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">判断区域是否是一个最大堆  <a href="#ga5f24e9af484f1657f09fb61b7ea20b6d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gae995a638cfe9b06b85e4199b7f6bc5ca"></a><!-- doxytag: member="单端线形序表::__slseq_ret_gt" ref="gae995a638cfe9b06b85e4199b7f6bc5ca" args="(i, j, r, greater)" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>__slseq_ret_gt</b>(i, j, r, greater)&#160;&#160;&#160;if (greater((i), (j))) { (r) = 0; break; } ++(i)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga2f52f1faf4a8b433d5cb46552a3d67de">slseq_push_heap</a>(type, begin, end, greater)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">将区域最后一个节点插入到堆中  <a href="#ga2f52f1faf4a8b433d5cb46552a3d67de"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga65dd21fdced82803b3508415606ab67c">slseq_pop_heap</a>(type, begin, end, greater)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">弹出区域中堆的顶点节点  <a href="#ga65dd21fdced82803b3508415606ab67c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><b>__slseq_adjust_heap</b>(type, base, first, last, greater)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gac018c8a1658c075efc346e2879790117">slseq_make_heap</a>(type, begin, end, greater)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">将一段区域建立成最大堆  <a href="#gac018c8a1658c075efc346e2879790117"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga0d6c768ed5c27f8dd419179f98842055">slseq_sort_heap</a>(type, begin, end, greater)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">对最大堆进行排序  <a href="#ga0d6c768ed5c27f8dd419179f98842055"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaacbbb83c02c780331146eeb3593564e5">slseq_shuffle</a>(type, begin, end, _RAND)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">对区域内的节点进行随机排列  <a href="#gaacbbb83c02c780331146eeb3593564e5"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaaded310138fd7f72a08cde3239155066">slseq_sort_insert</a>(type, head, begin, end, newly, greater_equal)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">按序插入  <a href="#gaaded310138fd7f72a08cde3239155066"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga020d376fc469108db771c67254e95f0e">slseq_is_sorted</a>(type, begin, end, greater_equal, res)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">判断区域是否是已排序的  <a href="#ga020d376fc469108db771c67254e95f0e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga1e1750218cc40b4b638c0b8560ae3f81">slseq_bubble_sort</a>(type, begin, end, greater)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">冒泡排序  <a href="#ga1e1750218cc40b4b638c0b8560ae3f81"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaac67765fe2abd1fb4a19b2ca396090bc">slseq_oddeven_sort</a>(type, begin, end, greater)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">奇偶排序  <a href="#gaac67765fe2abd1fb4a19b2ca396090bc"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><b>__slseq_oddeven_scan</b>(start, type, greater)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga6c2394714ca5cbce53c4922518891d1a">slseq_cocktail_sort</a>(type, begin, end, greater)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">鸡尾酒排序  <a href="#ga6c2394714ca5cbce53c4922518891d1a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gab46d83f4e41d78b5f66e6b320a2cf90f">slseq_comb_sort</a>(type, begin, end, greater)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">梳子排序  <a href="#gab46d83f4e41d78b5f66e6b320a2cf90f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga0d29f0bfa93aa43b78cf42775b298983">slseq_select_sort</a>(type, begin, end, greater)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">选择排序  <a href="#ga0d29f0bfa93aa43b78cf42775b298983"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaa9aebff1f039111a070cb5c635948400">slseq_insert_sort</a>(type, begin, end, greater)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">插入排序  <a href="#gaa9aebff1f039111a070cb5c635948400"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga197b786747dc3c95744f2bf8060b36ad">slseq_shell_sort</a>(type, begin, end, greater)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">希尔排序  <a href="#ga197b786747dc3c95744f2bf8060b36ad"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga0e81257e6808089aea04c746c3b14b0b">COUNTING_SIZE</a>(_min, _max)&#160;&#160;&#160;((_max) - (_min) + 1)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">计数排序计数缓存大小  <a href="#ga0e81257e6808089aea04c746c3b14b0b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gabe56db9f8a1c3e4e29a31b7597b9b59e">PIGEONHOLE_SIZE</a>(_max)&#160;&#160;&#160;((_max) + 1)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">鸽巢排序计数缓存大小  <a href="#gabe56db9f8a1c3e4e29a31b7597b9b59e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga613dcb0fec0cfe35de3ce9cf50bd1a43">slseq_counting_sort</a>(type, begin, end, hole, _min, _max)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">计数排序  <a href="#ga613dcb0fec0cfe35de3ce9cf50bd1a43"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gab5df877d51d0543e548b0b575a1e83a9">slseq_pigeonhole_sort</a>(type, begin, end, hole, _max)&#160;&#160;&#160;slseq_counting_sort(type, begin, end, hole, 0, _max)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">鸽巢排序  <a href="#gab5df877d51d0543e548b0b575a1e83a9"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="func-members"></a>
函数</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga03a2977a03211a37409bfb003ed77a8b"></a><!-- doxytag: member="单端线形序表::__slseq_check" ref="ga03a2977a03211a37409bfb003ed77a8b" args="(char *first, char *last, char *end)" -->
static int&#160;</td><td class="memItemRight" valign="bottom"><b>__slseq_check</b> (char *first, char *last, char *end)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga49bcdcedb1c05a3a1e6886f21a887c09"></a><!-- doxytag: member="单端线形序表::__slseq_copyable" ref="ga49bcdcedb1c05a3a1e6886f21a887c09" args="(char *dst, char *src, char *s_first, char *s_last, char *d_first, char *d_end)" -->
static int&#160;</td><td class="memItemRight" valign="bottom"><b>__slseq_copyable</b> (char *dst, char *src, char *s_first, char *s_last, char *d_first, char *d_end)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga4bad9f242697e646be6f0e97198ac558"></a><!-- doxytag: member="单端线形序表::__slseq_exist" ref="ga4bad9f242697e646be6f0e97198ac558" args="(char *first, char *last, char *itr)" -->
static int&#160;</td><td class="memItemRight" valign="bottom"><b>__slseq_exist</b> (char *first, char *last, char *itr)</td></tr>
</table>
<hr/><h2>宏定义文档</h2>
<a class="anchor" id="ga7a044ba9003ba05a3de2cea88db65e07"></a><!-- doxytag: member="slseq.h::slseq_iter" ref="ga7a044ba9003ba05a3de2cea88db65e07" args="(type)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_iter</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type</td><td>)</td>
          <td>&#160;&#160;&#160;type *</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>定义type类型迭代器 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">type</td><td>节点类型 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00038">38</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gab7b8f6f20db0f3e5681fd2184b1ae60c"></a><!-- doxytag: member="slseq.h::slseq_head" ref="gab7b8f6f20db0f3e5681fd2184b1ae60c" args="(type)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_head</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type</td><td>)</td>
          <td>&#160;&#160;&#160;struct { type * first; type * last; type * end; }</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>type类型表头 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">type</td><td>节点类型 </td></tr>
  </table>
  </dd>
</dl>
<dl class="note"><dt><b>注解:</b></dt><dd>first为缓存基地址， last为末尾节点(末尾节点是空的)， end是缓存末尾 </dd></dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00051">51</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga83c98cc4a910b1fce204a9dd409383fb"></a><!-- doxytag: member="slseq.h::slseq" ref="ga83c98cc4a910b1fce204a9dd409383fb" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq&#160;&#160;&#160;slseq_head</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>同slseq_head </p>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gab7b8f6f20db0f3e5681fd2184b1ae60c" title="type类型表头">slseq_head</a> </dd></dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00053">53</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga72020d78ab6e8221b1fe395153e0f5ed"></a><!-- doxytag: member="slseq.h::SLSEQ_HEAD" ref="ga72020d78ab6e8221b1fe395153e0f5ed" args="(type, name, arr)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define SLSEQ_HEAD</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">name, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">arr&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;slseq_head(type) name = {arr, arr, &amp;arr[count_of(arr)]}</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>定义一个名为name的表头，并对其初始化 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramname">name</td><td>表头名称 </td></tr>
    <tr><td class="paramname">arr</td><td>缓存数组名 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00065">65</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gabc7ae76112da39cad3a490ffe29a36d2"></a><!-- doxytag: member="slseq.h::SLSEQ" ref="gabc7ae76112da39cad3a490ffe29a36d2" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define SLSEQ&#160;&#160;&#160;SLSEQ_HEAD</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>同SLSEQ_HEAD </p>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga72020d78ab6e8221b1fe395153e0f5ed" title="定义一个名为name的表头，并对其初始化">SLSEQ_HEAD</a> </dd></dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00067">67</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gadc091f35bd93153cb4a60cdb0a48abef"></a><!-- doxytag: member="slseq.h::slseq_pr1" ref="gadc091f35bd93153cb4a60cdb0a48abef" args="(type)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_pr1</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type</td><td>)</td>
          <td>&#160;&#160;&#160;int (*)(type *)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>单参数回调函数指针类型 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">type</td><td>节点类型 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00077">77</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gac263dee4595a10b58e55bf7e58881607"></a><!-- doxytag: member="slseq.h::slseq_pr2" ref="gac263dee4595a10b58e55bf7e58881607" args="(type)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_pr2</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type</td><td>)</td>
          <td>&#160;&#160;&#160;int (*)(type *, type *)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>双参数回调函数指针类型 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">type</td><td>节点类型 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00078">78</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga9d1c44ede3c9a75c58319a77a6ec819a"></a><!-- doxytag: member="slseq.h::slseq_check" ref="ga9d1c44ede3c9a75c58319a77a6ec819a" args="(head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_check</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head</td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment">__slseq_check((<span class="keywordtype">char</span>*)((head)-&gt;first),   \
                  (<span class="keywordtype">char</span>*)((head)-&gt;last),    \
                  (<span class="keywordtype">char</span>*)((head)-&gt;end))
</pre></div>
<p>检查表 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>int 返回结果 </dd></dl>
<dl><dt><b>返回值:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">SLSEQ_CHECK_PASS</td><td>0 正常 </td></tr>
    <tr><td class="paramname">SLSEQ_CHECK_INVALID</td><td>1 无效缓存 </td></tr>
    <tr><td class="paramname">SLSEQ_CHECK_OVERFLOW</td><td>2 溢出 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00103">103</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga66ef4475adc758147d5aed6ea3056a4c"></a><!-- doxytag: member="slseq.h::slseq_reset" ref="ga66ef4475adc758147d5aed6ea3056a4c" args="(head, _first, _last, _end)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_reset</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_first, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_last, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_end&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {(head)-&gt;first = (_first);    \
        (head)-&gt;last = (_last);      \
        (head)-&gt;end = (_end);        \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>重置表头 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[out]</td><td class="paramname">head</td><td>目标表头 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">_first</td><td>表首节点 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">_last</td><td>表尾节点 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">_end</td><td>缓存终止处 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00116">116</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga3c4ad339e4584531edbf83514aa543e5"></a><!-- doxytag: member="slseq.h::slseq_init" ref="ga3c4ad339e4584531edbf83514aa543e5" args="(type, head, base, size)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_init</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">base, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">size&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga66ef4475adc758147d5aed6ea3056a4c" title="重置表头">slseq_reset</a>(head, (type *)(base), (type *)(base),   \
                (type *)(base) + (size))                \
</pre></div>
<p>初始化表 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">head</td><td>目标表头 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">base</td><td>缓存基址 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">size</td><td>缓存长度(节点容量) </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga1d2ff5d1484cb5ee9d3f8c2e097e4ba6" title="初始化表">SLSEQ_INIT</a> </dd></dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00131">131</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga0a2be500364de1117b7aeff8448a5c46"></a><!-- doxytag: member="slseq.h::slseq_init_serial" ref="ga0a2be500364de1117b7aeff8448a5c46" args="(type, head, base, size, cnt)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_init_serial</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">base, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">size, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">cnt&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga66ef4475adc758147d5aed6ea3056a4c" title="重置表头">slseq_reset</a>(head, (type *)(base),               \
                (type *)(base) + (cnt),             \
                (type *)(base) + (size))            \
</pre></div>
<p>作为序列来初始化表 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">head</td><td>目标表头 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">base</td><td>缓存基址 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">size</td><td>缓存长度(节点容量) </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cnt</td><td>序列长度 </td></tr>
  </table>
  </dd>
</dl>
<dl class="user"><dt><b>示例:</b></dt><dd><div class="fragment"><pre class="fragment">    <span class="comment">//将dclnk链表通过序列化来进行堆排序</span>
    <a class="code" href="struct____dclnk__node.html" title="双向环形链表节点">dclnk_head</a>* alives = &amp;bulltes.alive_list;
    <span class="keywordflow">if</span> (<a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga625abc40f57fd4e8c00e9b64fa095435" title="判断表是否可以排序">dclnk_sortable</a>(alives)) {
        Bullet* buf[MAX_BULLETS];
        <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga08213d0c7bcf381b466b18e3822c6934" title="初始化序列">SLSEQ_INIT_SERIAL</a>(<span class="keywordtype">int</span>, &amp;seq_head, buf, list_cnt);
        <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga4c8e23b2ed6f6855d4c43b02c0036e12" title="表的序列化">dclnk_serialize</a>(alives, buf, Bullet, alive_node);
        <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gac018c8a1658c075efc346e2879790117" title="将一段区域建立成最大堆">slseq_make_heap</a>(Bullet, <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga2696503718b3292109d395da44c988b6" title="得到指向正向起始位置的迭代器">slseq_begin</a>(&amp;head),
                        <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga5b3212d3b18809e193c701f7c6fef755" title="得到指向正向终止位置的迭代器">slseq_end</a>(&amp;seq_head),
                        CompareBulletAlive);
        <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga0d6c768ed5c27f8dd419179f98842055" title="对最大堆进行排序">slseq_sort_heap</a>(Bullet, <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga2696503718b3292109d395da44c988b6" title="得到指向正向起始位置的迭代器">slseq_begin</a>(&amp;head),
                        <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga5b3212d3b18809e193c701f7c6fef755" title="得到指向正向终止位置的迭代器">slseq_end</a>(&amp;seq_head),
                        CompareBulletAlive);
        <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gae8cc4e2839f2cef62d6fb8925f271308" title="表的反序列化">dclnk_deserialize</a>(alives, <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaaf7079f9b34aee3f8683bd952221280c" title="获得表的缓存基址">slseq_base</a>(&amp;seq_head),
                        <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga40c042a8aab0f3a3e2cbec1aa71be240" title="获取表的节点总数">slseq_count</a>(&amp;seq_head),
                        Bullet, alive_node);
    }
</pre></div> </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga08213d0c7bcf381b466b18e3822c6934" title="初始化序列">SLSEQ_INIT_SERIAL</a> </dd></dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00164">164</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga1d2ff5d1484cb5ee9d3f8c2e097e4ba6"></a><!-- doxytag: member="slseq.h::SLSEQ_INIT" ref="ga1d2ff5d1484cb5ee9d3f8c2e097e4ba6" args="(type, head, arr)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define SLSEQ_INIT</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">arr&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;slseq_init(type, head, arr, count_of(arr))</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>初始化表 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">head</td><td>目标表头 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">arr</td><td>缓存数组 </td></tr>
  </table>
  </dd>
</dl>
<dl class="user"><dt><b>示例:</b></dt><dd><div class="fragment"><pre class="fragment">    <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gab7b8f6f20db0f3e5681fd2184b1ae60c" title="type类型表头">slseq_head</a>(<span class="keywordtype">int</span>) h;
    <span class="keywordtype">int</span> buf[100];

    <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga1d2ff5d1484cb5ee9d3f8c2e097e4ba6" title="初始化表">SLSEQ_INIT</a>(<span class="keywordtype">int</span>, &amp;h, buf);
</pre></div> </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga3c4ad339e4584531edbf83514aa543e5" title="初始化表">slseq_init</a> </dd></dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00199">199</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga08213d0c7bcf381b466b18e3822c6934"></a><!-- doxytag: member="slseq.h::SLSEQ_INIT_SERIAL" ref="ga08213d0c7bcf381b466b18e3822c6934" args="(type, head, arr, cnt)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define SLSEQ_INIT_SERIAL</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">arr, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">cnt&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;slseq_init_serial(type, head, arr, count_of(arr), cnt)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>初始化序列 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">head</td><td>目标表头 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">arr</td><td>缓存数组 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cnt</td><td>序列长度 </td></tr>
  </table>
  </dd>
</dl>
<dl class="user"><dt><b>示例:</b></dt><dd><div class="fragment"><pre class="fragment">    <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gab7b8f6f20db0f3e5681fd2184b1ae60c" title="type类型表头">slseq_head</a>(DATA*) h;
    DATA* buf[100];

    <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga4c8e23b2ed6f6855d4c43b02c0036e12" title="表的序列化">dclnk_serialize</a>(&amp;lst, buf, DATA, node);
    <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga08213d0c7bcf381b466b18e3822c6934" title="初始化序列">SLSEQ_INIT_SERIAL</a>(<span class="keywordtype">int</span>, &amp;h, buf, <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_x8E_xAF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gaa4d3dc1196aa9fe3c0c044503323ac15" title="统计表的节点数量">dclnk_count</a>(&amp;lst));
</pre></div> </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga0a2be500364de1117b7aeff8448a5c46" title="作为序列来初始化表">slseq_init_serial</a> </dd></dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00201">201</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga307e2dd9b759efca6d7ce111828ce42f"></a><!-- doxytag: member="slseq.h::slseq_clear" ref="ga307e2dd9b759efca6d7ce111828ce42f" args="(head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_clear</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head</td><td>)</td>
          <td>&#160;&#160;&#160;((head)-&gt;last = (head)-&gt;first)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>清空表 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[out]</td><td class="paramname">head</td><td>表头 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00209">209</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gaaf7079f9b34aee3f8683bd952221280c"></a><!-- doxytag: member="slseq.h::slseq_base" ref="gaaf7079f9b34aee3f8683bd952221280c" args="(head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_base</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head</td><td>)</td>
          <td>&#160;&#160;&#160;((head)-&gt;first)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>获得表的缓存基址 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>char* 返回基地址 </dd></dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00217">217</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga40c042a8aab0f3a3e2cbec1aa71be240"></a><!-- doxytag: member="slseq.h::slseq_count" ref="ga40c042a8aab0f3a3e2cbec1aa71be240" args="(head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_count</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head</td><td>)</td>
          <td>&#160;&#160;&#160;((size_t)((head)-&gt;last - (head)-&gt;first))</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>获取表的节点总数 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>size_t 返回节点总数 </dd></dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00225">225</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga9f5fe365d6658fe43e91a1928dbd3506"></a><!-- doxytag: member="slseq.h::slseq_size" ref="ga9f5fe365d6658fe43e91a1928dbd3506" args="(head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_size</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head</td><td>)</td>
          <td>&#160;&#160;&#160;((size_t)((head)-&gt;end - (head)-&gt;first))</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>获取表的缓存长度 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>size_t 返回缓存长度 </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga9d0bfd9f99636d2a61fae233bba3a945" title="获取表的节点容量">slseq_capacity</a> </dd></dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00235">235</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga9d0bfd9f99636d2a61fae233bba3a945"></a><!-- doxytag: member="slseq.h::slseq_capacity" ref="ga9d0bfd9f99636d2a61fae233bba3a945" args="(head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_capacity</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head</td><td>)</td>
          <td>&#160;&#160;&#160;slseq_size(head)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>获取表的节点容量 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>size_t 返回节点容量 </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga9f5fe365d6658fe43e91a1928dbd3506" title="获取表的缓存长度">slseq_size</a> </dd></dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00245">245</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga9eea604709265671b608b47938e1a376"></a><!-- doxytag: member="slseq.h::slseq_remain" ref="ga9eea604709265671b608b47938e1a376" args="(head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_remain</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head</td><td>)</td>
          <td>&#160;&#160;&#160;((size_t)((head)-&gt;end - (head)-&gt;last))</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>获取表的剩余容量 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>size_t 返回剩余容量 </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaa6bbfe2c0dca4dcf85c1a70990fe594c" title="判断表是否已满">slseq_full</a>, <a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gae4268073051fcbb3e21b122065713cff" title="判断表是否为空">slseq_empty</a> </dd></dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00254">254</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gae4268073051fcbb3e21b122065713cff"></a><!-- doxytag: member="slseq.h::slseq_empty" ref="gae4268073051fcbb3e21b122065713cff" args="(head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_empty</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head</td><td>)</td>
          <td>&#160;&#160;&#160;((head)-&gt;first &gt;= (head)-&gt;last)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>判断表是否为空 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>int 返回结果 </dd></dl>
<dl><dt><b>返回值:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">1</td><td>真 </td></tr>
    <tr><td class="paramname">0</td><td>假 </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaa6bbfe2c0dca4dcf85c1a70990fe594c" title="判断表是否已满">slseq_full</a>, <a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga9eea604709265671b608b47938e1a376" title="获取表的剩余容量">slseq_remain</a> </dd></dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00266">266</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gaa6bbfe2c0dca4dcf85c1a70990fe594c"></a><!-- doxytag: member="slseq.h::slseq_full" ref="gaa6bbfe2c0dca4dcf85c1a70990fe594c" args="(head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_full</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head</td><td>)</td>
          <td>&#160;&#160;&#160;((head)-&gt;last &gt;= (head)-&gt;end)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>判断表是否已满 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>int 返回结果 </dd></dl>
<dl><dt><b>返回值:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">1</td><td>真 </td></tr>
    <tr><td class="paramname">0</td><td>假 </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gae4268073051fcbb3e21b122065713cff" title="判断表是否为空">slseq_empty</a>, <a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga9eea604709265671b608b47938e1a376" title="获取表的剩余容量">slseq_remain</a> </dd></dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00277">277</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga0489678a9321eb40db61f65de80ff96f"></a><!-- doxytag: member="slseq.h::slseq_singular" ref="ga0489678a9321eb40db61f65de80ff96f" args="(head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_singular</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head</td><td>)</td>
          <td>&#160;&#160;&#160;((head)-&gt;last == ((head)-&gt;first + 1))</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>判断表是否只有单个节点 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>int 返回结果 </dd></dl>
<dl><dt><b>返回值:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">1</td><td>真 </td></tr>
    <tr><td class="paramname">0</td><td>假 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00287">287</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga64411d864a8c05dbf91c1ada3ba1f131"></a><!-- doxytag: member="slseq.h::slseq_sortable" ref="ga64411d864a8c05dbf91c1ada3ba1f131" args="(head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_sortable</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head</td><td>)</td>
          <td>&#160;&#160;&#160;((head)-&gt;last &gt; ((head)-&gt;first + 1))</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>判断表是否可以被排序 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>int 返回结果 </dd></dl>
<dl><dt><b>返回值:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">1</td><td>真 </td></tr>
    <tr><td class="paramname">0</td><td>假 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00298">298</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gaf13cef717587bc54d064f5d0b0766314"></a><!-- doxytag: member="slseq.h::slseq_insertable" ref="gaf13cef717587bc54d064f5d0b0766314" args="(head, cnt)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_insertable</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">cnt&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;((head)-&gt;end &gt;= ((head)-&gt;last + (cnt)))</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>判断表是否可以插入一定数量的节点 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cnt</td><td>插入的节点数 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>int 返回结果 </dd></dl>
<dl><dt><b>返回值:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">1</td><td>真 </td></tr>
    <tr><td class="paramname">0</td><td>假 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00310">310</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gafe64444f99f75fe1813b6a31a9c02297"></a><!-- doxytag: member="slseq.h::slseq_serialable" ref="gafe64444f99f75fe1813b6a31a9c02297" args="(head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_serialable</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head</td><td>)</td>
          <td>&#160;&#160;&#160;((head)-&gt;last &gt; (head)-&gt;first)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>判断表是否可以序列化 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>int 返回结果 </dd></dl>
<dl><dt><b>返回值:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">1</td><td>真 </td></tr>
    <tr><td class="paramname">0</td><td>假 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00321">321</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gad1717496486cf96efa2b49bac7b65fcb"></a><!-- doxytag: member="slseq.h::slseq_copyable" ref="gad1717496486cf96efa2b49bac7b65fcb" args="(dst, src)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_copyable</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">dst, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">src&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment">__slseq_copyable((<span class="keywordtype">char</span>*)(dst),              \
                     (<span class="keywordtype">char</span>*)(src),              \
                     (<span class="keywordtype">char</span>*)((src)-&gt;first),     \
                     (<span class="keywordtype">char</span>*)((src)-&gt;last),      \
                     (<span class="keywordtype">char</span>*)((dst)-&gt;first),     \
                     (<span class="keywordtype">char</span>*)((dst)-&gt;end))
</pre></div>
<p>判断源表是否可以深拷贝到目标表 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">dst</td><td>目标表头 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">src</td><td>源表头 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>int 返回结果 </dd></dl>
<dl><dt><b>返回值:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">1</td><td>真 </td></tr>
    <tr><td class="paramname">0</td><td>假 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00333">333</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gae27fe82da920e5b073e27f8e5ed3c69c"></a><!-- doxytag: member="slseq.h::slseq_at" ref="gae27fe82da920e5b073e27f8e5ed3c69c" args="(head, index)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_at</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">index&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;((head)-&gt;first + (index))</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>根据正向索引获取迭代器 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">index</td><td>指定索引 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>slseq_iter 返回对应的迭代器 </dd></dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00355">355</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga3c6e3aa9351796900e0d28dce2988f45"></a><!-- doxytag: member="slseq.h::slseq_reverse_at" ref="ga3c6e3aa9351796900e0d28dce2988f45" args="(head, index)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_reverse_at</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">index&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;((head)-&gt;last - ((index) + 1))</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>根据逆向索引获取迭代器 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">index</td><td>指定索引 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>slseq_iter 返回对应的迭代器 </dd></dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00364">364</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga1861e997fcddc32c22f346db83f6a28e"></a><!-- doxytag: member="slseq.h::slseq_index_of" ref="ga1861e997fcddc32c22f346db83f6a28e" args="(head, itr)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_index_of</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">itr&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;((itr) - (head)-&gt;first)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>获取迭代器对应的正向索引 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">itr</td><td>迭代器 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>slseq_iter 返回正向索引 </dd></dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00373">373</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga92b2525c6ccdee41ee4b90fa5fcfeaa3"></a><!-- doxytag: member="slseq.h::slseq_reverse_index_of" ref="ga92b2525c6ccdee41ee4b90fa5fcfeaa3" args="(head, itr)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_reverse_index_of</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">itr&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;((head)-&gt;last - ((itr) + 1))</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>获取迭代器对应的逆向索引 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">itr</td><td>迭代器 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>slseq_iter 返回逆向索引 </dd></dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00382">382</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga67e3a970b40b8bd19b2882cf840e764b"></a><!-- doxytag: member="slseq.h::slseq_exist" ref="ga67e3a970b40b8bd19b2882cf840e764b" args="(head, itr)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_exist</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">itr&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment">__slseq_exist((<span class="keywordtype">char</span>*)((head)-&gt;first),   \
                  (<span class="keywordtype">char</span>*)((head)-&gt;last),    \
                  (<span class="keywordtype">char</span>*)(itr))
</pre></div>
<p>判断迭代器对应的节点是否存在于表中 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">itr</td><td>迭代器 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>int 返回结果 </dd></dl>
<dl><dt><b>返回值:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">1</td><td>真 </td></tr>
    <tr><td class="paramname">0</td><td>假 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00394">394</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gaaad5b820f6d275327a9fa2a798f44fff"></a><!-- doxytag: member="slseq.h::slseq_distance" ref="gaaad5b820f6d275327a9fa2a798f44fff" args="(first, last)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_distance</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">first, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">last&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;((size_t)((last) - (first)) + 1)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>计算两个节点的迭代距离 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">first</td><td>首节点 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">last</td><td>尾节点 </td></tr>
  </table>
  </dd>
</dl>
<dl class="note"><dt><b>注解:</b></dt><dd>以索引为例，2到4的距离是4 (4-2+1=3) </dd></dl>
<dl class="return"><dt><b>返回:</b></dt><dd>size_t 返回距离 </dd></dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00412">412</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga7c03b922ae6e488f1bf8c46b58c9ef2a"></a><!-- doxytag: member="slseq.h::slseq_insert" ref="ga7c03b922ae6e488f1bf8c46b58c9ef2a" args="(type, head, pos, newly)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_insert</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">pos, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">newly&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {   \
        type * _q_p = (type *)(pos);                \
        memmove(_q_p + 1, _q_p, <span class="keyword">sizeof</span>(type) *     \
            ((head)-&gt;last++ - _q_p));              \
        *_q_p = (newly);                            \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>在指定位置插入节点 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">head</td><td>表头 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">pos</td><td>插入位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">newly</td><td>新节点 </td></tr>
  </table>
  </dd>
</dl>
<dl class="note"><dt><b>注解:</b></dt><dd>插入完成之后，则pos迭代器失效 </dd></dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00423">423</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga5df72a88d5d650cc39071cbe6cb0622c"></a><!-- doxytag: member="slseq.h::slseq_erase" ref="ga5df72a88d5d650cc39071cbe6cb0622c" args="(type, head, pos)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_erase</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">pos&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {       \
        type * _q_p = (type *)(pos);            \
        memcpy(_q_p, _q_p + 1, <span class="keyword">sizeof</span>(type) *  \
            ((--(head)-&gt;last) - _q_p));        \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>删除指定位置的节点 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">head</td><td>表头 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">pos</td><td>删除位置 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00437">437</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga1677c06cc848f559a4dcdc4405b33311"></a><!-- doxytag: member="slseq.h::slseq_inserts" ref="ga1677c06cc848f559a4dcdc4405b33311" args="(type, head, pos, src, cnt)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_inserts</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">pos, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">src, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">cnt&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {   \
        <span class="keywordtype">size_t</span> _q_c = (cnt);                            \
        type * _q_sb = (type *)(src);                   \
        type * _q_p = (type *)(pos);                    \
        memmove(_q_p + _q_c, _q_p, <span class="keyword">sizeof</span>(type) *      \
            ((head)-&gt;last - _q_p));                    \
        memcpy(_q_p, _q_sb, <span class="keyword">sizeof</span>(type) * _q_c);       \
        (head)-&gt;last += _q_c;                           \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>在指定位置连续插入多个节点 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">head</td><td>表头 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">pos</td><td>插入位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">src</td><td>新节点缓存 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cnt</td><td>新节点数 </td></tr>
  </table>
  </dd>
</dl>
<dl class="note"><dt><b>注解:</b></dt><dd>插入完成之后，则pos迭代器失效 </dd></dl>
<dl class="user"><dt><b>示例:</b></dt><dd><div class="fragment"><pre class="fragment">    <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga7a044ba9003ba05a3de2cea88db65e07" title="定义type类型迭代器">slseq_iter</a>(<span class="keywordtype">int</span>) p = <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gae27fe82da920e5b073e27f8e5ed3c69c" title="根据正向索引获取迭代器">slseq_at</a>(&amp;head, 8);
    <span class="comment">// 判断是否可以插入cnt个节点</span>
    if (<a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaf13cef717587bc54d064f5d0b0766314" title="判断表是否可以插入一定数量的节点">slseq_insertable</a>(&amp;head, cnt)) {
        <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga1677c06cc848f559a4dcdc4405b33311" title="在指定位置连续插入多个节点">slseq_inserts</a>(<span class="keywordtype">int</span>, &amp;head, p, buf, cnt);
    }
</pre></div> </dd></dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00461">461</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gaaf8c04109eb7af201387e220ab585a55"></a><!-- doxytag: member="slseq.h::slseq_erases" ref="gaaf8c04109eb7af201387e220ab585a55" args="(type, head, begin, end)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_erases</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">begin, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">end&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {   \
        type * _q_e = (type *)(end);                \
        type * _q_f = (type *)(begin);              \
        memcpy(_q_f, _q_e, <span class="keyword">sizeof</span>(type) *          \
            ((head)-&gt;last - _q_e));                \
        (head)-&gt;last -= (_q_e - _q_f);              \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>连续删除指定位置的多个节点 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">head</td><td>表头 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">begin</td><td>起始位置 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">end</td><td>终止位置 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00479">479</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga5940c6a04d0980389745c1efa1aaa979"></a><!-- doxytag: member="slseq.h::slseq_splice" ref="ga5940c6a04d0980389745c1efa1aaa979" args="(type, dst, pos, src, _first, _last)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_splice</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">dst, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">pos, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">src, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_first, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_last&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {type * _q_e = (type *)(_last) + 1;              \
        type * _q_f = (type *)(_first);                 \
        type * _q_p = (type *)(pos);                    \
        <span class="keywordtype">size_t</span> _q_c = _q_e - _q_f;                      \
        memmove(_q_p + _q_c, _q_p, <span class="keyword">sizeof</span>(type) *      \
            ((dst)-&gt;last - _q_p));                     \
        memcpy(_q_p, _q_f, <span class="keyword">sizeof</span>(type) * _q_c);        \
        memcpy(_q_f, _q_f + _q_c, <span class="keyword">sizeof</span>(type) *       \
            ((src)-&gt;last - _q_e));                     \
        (src)-&gt;last -= _q_c;                            \
        (dst)-&gt;last += _q_c;                            \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>移接一段序列[first, last]到目标位置。 这可以发生在同一个序表中，也可以在不同的序表之间 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">dst</td><td>目标表头 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">pos</td><td>指定位置 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">src</td><td>源表头 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">_first</td><td>起始位置，包括_first </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">_last</td><td>末尾位置，包括_last </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00498">498</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gae6d218d7f4e92811ca480f52d698e9fe"></a><!-- doxytag: member="slseq.h::slseq_appends" ref="gae6d218d7f4e92811ca480f52d698e9fe" args="(type, head, src, cnt)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_appends</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">src, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">cnt&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {        \
        <span class="keywordtype">size_t</span> _q_c = (cnt);                            \
        memcpy((head)-&gt;last, src, <span class="keyword">sizeof</span>(type) * _q_c); \
        (head)-&gt;last += _q_c;                           \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>在表尾添加多个节点 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">head</td><td>表头 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">src</td><td>新节点缓存 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cnt</td><td>新节点数 </td></tr>
  </table>
  </dd>
</dl>
<dl class="user"><dt><b>示例:</b></dt><dd><div class="fragment"><pre class="fragment">    <span class="comment">// 判断是否可以插入cnt个节点</span>
    <span class="keywordflow">if</span> (<a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaf13cef717587bc54d064f5d0b0766314" title="判断表是否可以插入一定数量的节点">slseq_insertable</a>(&amp;head, cnt)) {
        <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gae6d218d7f4e92811ca480f52d698e9fe" title="在表尾添加多个节点">slseq_appends</a>(<span class="keywordtype">int</span>, &amp;head, buf, cnt);
    }
</pre></div> </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga224d22084859961800f30a0607d7a7c2" title="在表尾添加新节点">slseq_append</a> </dd></dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00528">528</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga224d22084859961800f30a0607d7a7c2"></a><!-- doxytag: member="slseq.h::slseq_append" ref="ga224d22084859961800f30a0607d7a7c2" args="(head, newly)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_append</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">newly&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;(*((head)-&gt;last++) = (newly))</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>在表尾添加新节点 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">head</td><td>表头 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">newly</td><td>新节点 </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gae6d218d7f4e92811ca480f52d698e9fe" title="在表尾添加多个节点">slseq_appends</a> </dd></dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00541">541</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga33999e7a0285c444ce27297e786e23af"></a><!-- doxytag: member="slseq.h::slseq_copy" ref="ga33999e7a0285c444ce27297e786e23af" args="(type, dst, src)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_copy</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">dst, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">src&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {         \
        <span class="keywordtype">size_t</span> _q_c = <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga40c042a8aab0f3a3e2cbec1aa71be240" title="获取表的节点总数">slseq_count</a>(src);         \
        memcpy((dst)-&gt;first, (src)-&gt;first,      \
            <span class="keyword">sizeof</span>(type) * _q_c);               \
        (dst)-&gt;last = (dst)-&gt;first + _q_c;      \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>深拷贝源表的节点到目标表 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">dst</td><td>目标表 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">src</td><td>源表 </td></tr>
  </table>
  </dd>
</dl>
<dl class="user"><dt><b>示例:</b></dt><dd><div class="fragment"><pre class="fragment">    <span class="comment">// 判断是否可以从src拷贝到dst</span>
    <span class="keywordflow">if</span> (<a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gad1717496486cf96efa2b49bac7b65fcb" title="判断源表是否可以深拷贝到目标表">slseq_copyable</a>(&amp;dst, &amp;src)) {
        <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga33999e7a0285c444ce27297e786e23af" title="深拷贝源表的节点到目标表">slseq_copy</a>(<span class="keywordtype">int</span>, &amp;dst, &amp;src);
    }
</pre></div> </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gad1717496486cf96efa2b49bac7b65fcb" title="判断源表是否可以深拷贝到目标表">slseq_copyable</a> </dd></dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00559">559</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gae1494928c2cf16eb8b6975318f492f1c"></a><!-- doxytag: member="slseq.h::slseq_push_back" ref="gae1494928c2cf16eb8b6975318f492f1c" args="(head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_push_back</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head</td><td>)</td>
          <td>&#160;&#160;&#160;((head)-&gt;last++)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>获取指向表尾插入节点位置的迭代器 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">head</td><td>表头 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>slseq_iter 返回迭代器 </dd></dl>
<dl class="user"><dt><b>示例:</b></dt><dd><div class="fragment"><pre class="fragment">    <span class="comment">// 在表尾插入i</span>
    *<a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gae1494928c2cf16eb8b6975318f492f1c" title="获取指向表尾插入节点位置的迭代器">slseq_push_back</a>(&amp;head) = i;
</pre></div> </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga2a34300fb1024bdb7a96c19c36f5af34" title="获取指向表尾节点位置的迭代器">slseq_pop_back</a> </dd></dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00578">578</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga2a34300fb1024bdb7a96c19c36f5af34"></a><!-- doxytag: member="slseq.h::slseq_pop_back" ref="ga2a34300fb1024bdb7a96c19c36f5af34" args="(head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_pop_back</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head</td><td>)</td>
          <td>&#160;&#160;&#160;(--(head)-&gt;last)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>获取指向表尾节点位置的迭代器 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">head</td><td>表头 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>slseq_iter 返回迭代器 </dd></dl>
<dl class="user"><dt><b>示例:</b></dt><dd><div class="fragment"><pre class="fragment">    <span class="comment">// 移除表尾节点</span>
    <span class="keywordtype">int</span> d = *<a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga2a34300fb1024bdb7a96c19c36f5af34" title="获取指向表尾节点位置的迭代器">slseq_pop_back</a>(&amp;head);
</pre></div> </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gae1494928c2cf16eb8b6975318f492f1c" title="获取指向表尾插入节点位置的迭代器">slseq_push_back</a> </dd></dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00592">592</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gae38030bc268572393c04e9721f8ff285"></a><!-- doxytag: member="slseq.h::slseq_iter_replace" ref="gae38030bc268572393c04e9721f8ff285" args="(victim, newly)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_iter_replace</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">victim, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">newly&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;(*(victim) = (newly))</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>用新节点替换目标节点 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">victim</td><td>受害目标节点 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">newly</td><td>新节点 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00600">600</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga84107dab973ae1bc02b2d56973e1085c"></a><!-- doxytag: member="slseq.h::__slseq_iter_swap" ref="ga84107dab973ae1bc02b2d56973e1085c" args="(type, a, b)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define __slseq_iter_swap</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">a, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">b&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {\
    type _q_t = *(a); *(a) = *(b); *(b) = _q_t; } <span class="keywordflow">while</span> (0)
</pre></div>
<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00602">602</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gae27918a0c5b158a22dee769f063921ae"></a><!-- doxytag: member="slseq.h::slseq_iter_swap" ref="gae27918a0c5b158a22dee769f063921ae" args="(type, a, b)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_iter_swap</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">a, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">b&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {        \
        type * _q_b = (b); type * _q_a = (a);   \
        __slseq_iter_swap(type, _q_a, _q_b);    \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>用新节点替换目标节点 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">a</td><td>第一个节点 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">b</td><td>第二个节点 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00612">612</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga155890eb273f29f74bac3143af5030d8"></a><!-- doxytag: member="slseq.h::slseq_replace" ref="ga155890eb273f29f74bac3143af5030d8" args="(victim, newly)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_replace</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">victim, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">newly&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;(*(victim) = *(newly))</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>用新表头替换目标表头 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">victim</td><td>受害目标表头 </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">newly</td><td>新表头 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00623">623</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga809343daf7d6e11e225b842b762078f3"></a><!-- doxytag: member="slseq.h::slseq_swap" ref="ga809343daf7d6e11e225b842b762078f3" args="(type, a, b)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_swap</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">a, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">b&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> { \
        <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gab7b8f6f20db0f3e5681fd2184b1ae60c" title="type类型表头">slseq_head</a>(type) t = *(a);  \
        *(a) = *(b); *(b) = t;      \
    } while (0)
</pre></div>
<p>交换两个表头 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">a</td><td>第一个表头 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">b</td><td>第二个表头 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00632">632</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gad934bf5c6108112fbaef444484c71c43"></a><!-- doxytag: member="slseq.h::slseq_front" ref="gad934bf5c6108112fbaef444484c71c43" args="(head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_front</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head</td><td>)</td>
          <td>&#160;&#160;&#160;((head)-&gt;first)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>得到表首节点 </p>
<dl class="return"><dt><b>返回:</b></dt><dd>slseq_iter 返回节点 </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gad58e7ccc25501ae4bfabbecb9321a313" title="得到表首节点">slseq_back</a> </dd></dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00643">643</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gad58e7ccc25501ae4bfabbecb9321a313"></a><!-- doxytag: member="slseq.h::slseq_back" ref="gad58e7ccc25501ae4bfabbecb9321a313" args="(head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_back</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head</td><td>)</td>
          <td>&#160;&#160;&#160;((head)-&gt;last - 1)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>得到表首节点 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>slseq_iter 返回节点 </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gad934bf5c6108112fbaef444484c71c43" title="得到表首节点">slseq_front</a> </dd></dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00652">652</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga2696503718b3292109d395da44c988b6"></a><!-- doxytag: member="slseq.h::slseq_begin" ref="ga2696503718b3292109d395da44c988b6" args="(head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_begin</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head</td><td>)</td>
          <td>&#160;&#160;&#160;slseq_front(head)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>得到指向正向起始位置的迭代器 </p>
<dl class="return"><dt><b>返回:</b></dt><dd>slseq_iter 返回迭代器 </dd></dl>
<dl class="user"><dt><b>示例:</b></dt><dd><div class="fragment"><pre class="fragment">    <span class="comment">// 遍历序表</span>
    <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga7a044ba9003ba05a3de2cea88db65e07" title="定义type类型迭代器">slseq_iter</a>(<span class="keywordtype">int</span>) e = <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga5b3212d3b18809e193c701f7c6fef755" title="得到指向正向终止位置的迭代器">slseq_end</a>(&amp;head);
    <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga7a044ba9003ba05a3de2cea88db65e07" title="定义type类型迭代器">slseq_iter</a>(<span class="keywordtype">int</span>) i = <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga2696503718b3292109d395da44c988b6" title="得到指向正向起始位置的迭代器">slseq_begin</a>(&amp;head);
    while (i &lt; e) {
        printf(<span class="stringliteral">&quot;[%d]=%d\n&quot;</span>, <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga1861e997fcddc32c22f346db83f6a28e" title="获取迭代器对应的正向索引">slseq_index_of</a>(&amp;head, i), *i);
        <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga362a73c9e604923921dc578accf6dcc4" title="迭代器递增">slseq_inc</a>(i);
    }
</pre></div> </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga5b3212d3b18809e193c701f7c6fef755" title="得到指向正向终止位置的迭代器">slseq_end</a>, <a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gafcabee0dca463e6c33ecb77df3592abd" title="得到指向逆向起始位置的迭代器">slseq_rbegin</a>, <a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaaabcd8478811a31b7b50e8dcdcfad0ae" title="得到指向逆向起始位置的迭代器">slseq_rend</a> </dd></dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00670">670</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga5b3212d3b18809e193c701f7c6fef755"></a><!-- doxytag: member="slseq.h::slseq_end" ref="ga5b3212d3b18809e193c701f7c6fef755" args="(head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_end</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head</td><td>)</td>
          <td>&#160;&#160;&#160;((head)-&gt;last)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>得到指向正向终止位置的迭代器 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>slseq_iter 返回迭代器 </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga2696503718b3292109d395da44c988b6" title="得到指向正向起始位置的迭代器">slseq_begin</a>, <a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gafcabee0dca463e6c33ecb77df3592abd" title="得到指向逆向起始位置的迭代器">slseq_rbegin</a>, <a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaaabcd8478811a31b7b50e8dcdcfad0ae" title="得到指向逆向起始位置的迭代器">slseq_rend</a> </dd></dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00679">679</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga072a06523aa90f633d5668dbbe5c6817"></a><!-- doxytag: member="slseq.h::slseq_end_of" ref="ga072a06523aa90f633d5668dbbe5c6817" args="(itr)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_end_of</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">itr</td><td>)</td>
          <td>&#160;&#160;&#160;((itr) + 1)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>得到指向当前节点的正向终止位置的迭代器 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">last</td><td>当前节点 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>slseq_iter 返回终止迭代器 </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga2696503718b3292109d395da44c988b6" title="得到指向正向起始位置的迭代器">slseq_begin</a>, <a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga5b3212d3b18809e193c701f7c6fef755" title="得到指向正向终止位置的迭代器">slseq_end</a> </dd></dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00688">688</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gafcabee0dca463e6c33ecb77df3592abd"></a><!-- doxytag: member="slseq.h::slseq_rbegin" ref="gafcabee0dca463e6c33ecb77df3592abd" args="(head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_rbegin</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head</td><td>)</td>
          <td>&#160;&#160;&#160;slseq_back(head)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>得到指向逆向起始位置的迭代器 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>slseq_iter 返回迭代器 </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga5b3212d3b18809e193c701f7c6fef755" title="得到指向正向终止位置的迭代器">slseq_end</a>, <a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga2696503718b3292109d395da44c988b6" title="得到指向正向起始位置的迭代器">slseq_begin</a>, <a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaaabcd8478811a31b7b50e8dcdcfad0ae" title="得到指向逆向起始位置的迭代器">slseq_rend</a> </dd></dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00697">697</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gaaabcd8478811a31b7b50e8dcdcfad0ae"></a><!-- doxytag: member="slseq.h::slseq_rend" ref="gaaabcd8478811a31b7b50e8dcdcfad0ae" args="(head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_rend</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head</td><td>)</td>
          <td>&#160;&#160;&#160;((head)-&gt;first - 1)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>得到指向逆向起始位置的迭代器 </p>
<dl class="return"><dt><b>返回:</b></dt><dd>slseq_iter 返回迭代器 </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga5b3212d3b18809e193c701f7c6fef755" title="得到指向正向终止位置的迭代器">slseq_end</a>, <a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gafcabee0dca463e6c33ecb77df3592abd" title="得到指向逆向起始位置的迭代器">slseq_rbegin</a>, <a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaaabcd8478811a31b7b50e8dcdcfad0ae" title="得到指向逆向起始位置的迭代器">slseq_rend</a> </dd></dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00705">705</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga676a8e963b9b96901e3beb6951f4129c"></a><!-- doxytag: member="slseq.h::slseq_rend_of" ref="ga676a8e963b9b96901e3beb6951f4129c" args="(itr)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_rend_of</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">itr</td><td>)</td>
          <td>&#160;&#160;&#160;((itr) - 1)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>得到指向当前节点的逆向终止位置的迭代器 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">last</td><td>当前节点 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>slseq_iter 返回终止迭代器 </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gafcabee0dca463e6c33ecb77df3592abd" title="得到指向逆向起始位置的迭代器">slseq_rbegin</a>, <a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaaabcd8478811a31b7b50e8dcdcfad0ae" title="得到指向逆向起始位置的迭代器">slseq_rend</a> </dd></dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00714">714</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga8c8b52691001770ceeee02de73ce8202"></a><!-- doxytag: member="slseq.h::slseq_next" ref="ga8c8b52691001770ceeee02de73ce8202" args="(itr)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_next</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">itr</td><td>)</td>
          <td>&#160;&#160;&#160;((itr) + 1)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>获取当前节点的后继节点 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">itr</td><td>当前节点 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>slseq_iter 返回后继节点 </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaf6d12385b5949b487f1643a1207bffca" title="获取当前节点的前驱节点">slseq_prev</a> </dd></dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00723">723</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gaf6d12385b5949b487f1643a1207bffca"></a><!-- doxytag: member="slseq.h::slseq_prev" ref="gaf6d12385b5949b487f1643a1207bffca" args="(itr)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_prev</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">itr</td><td>)</td>
          <td>&#160;&#160;&#160;((itr) - 1)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>获取当前节点的前驱节点 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">itr</td><td>当前节点 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>slseq_iter 返回前驱节点 </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga8c8b52691001770ceeee02de73ce8202" title="获取当前节点的后继节点">slseq_next</a> </dd></dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00732">732</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga2a644ab476a2a1180471a5770100a30a"></a><!-- doxytag: member="slseq.h::slseq_advance" ref="ga2a644ab476a2a1180471a5770100a30a" args="(cur, dist)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_advance</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">cur, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">dist&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;((cur) + (dist))</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>给迭代器增加一段距离或减小一段距离 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">cur</td><td>迭代器 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">dist</td><td>增加的距离。正数时，表示增加；负数时，表示减小 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>slseq_iter 返回新迭代器 </dd></dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00741">741</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga7746110512440a11fca7377f485d5e9e"></a><!-- doxytag: member="slseq.h::SLSEQ_NOT_END" ref="ga7746110512440a11fca7377f485d5e9e" args="(itr, end)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define SLSEQ_NOT_END</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">itr, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">end&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;((itr) &lt; (end))</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>迭代结束条件 </p>
<dl class="user"><dt><b>示例:</b></dt><dd><div class="fragment"><pre class="fragment">    <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga7a044ba9003ba05a3de2cea88db65e07" title="定义type类型迭代器">slseq_iter</a>(<span class="keywordtype">int</span>) e = <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga5b3212d3b18809e193c701f7c6fef755" title="得到指向正向终止位置的迭代器">slseq_end</a>(&amp;head);
    <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga7a044ba9003ba05a3de2cea88db65e07" title="定义type类型迭代器">slseq_iter</a>(<span class="keywordtype">int</span>) i = <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga2696503718b3292109d395da44c988b6" title="得到指向正向起始位置的迭代器">slseq_begin</a>(&amp;head);
    while (<a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga7746110512440a11fca7377f485d5e9e" title="迭代结束条件">SLSEQ_NOT_END</a>(i, e)) {
        ......
        <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga362a73c9e604923921dc578accf6dcc4" title="迭代器递增">slseq_inc</a>(i);
    }
</pre></div> </dd></dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00767">767</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga52cfe1d31c72d01e1f94fa5cc629993d"></a><!-- doxytag: member="slseq.h::SLSEQ_NOT_REND" ref="ga52cfe1d31c72d01e1f94fa5cc629993d" args="(itr, rend)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define SLSEQ_NOT_REND</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">itr, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">rend&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;((itr) &gt; (rend))</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>逆向迭代结束条件 </p>
<dl class="user"><dt><b>示例:</b></dt><dd><div class="fragment"><pre class="fragment">    <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga7a044ba9003ba05a3de2cea88db65e07" title="定义type类型迭代器">slseq_iter</a>(<span class="keywordtype">int</span>) e = <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaaabcd8478811a31b7b50e8dcdcfad0ae" title="得到指向逆向起始位置的迭代器">slseq_rend</a>(&amp;head);
    <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga7a044ba9003ba05a3de2cea88db65e07" title="定义type类型迭代器">slseq_iter</a>(<span class="keywordtype">int</span>) i = <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gafcabee0dca463e6c33ecb77df3592abd" title="得到指向逆向起始位置的迭代器">slseq_rbegin</a>(&amp;head);
    while (<a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga52cfe1d31c72d01e1f94fa5cc629993d" title="逆向迭代结束条件">SLSEQ_NOT_REND</a>(i, e)) {
        ......
        <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga90c54c4552eba1e8b8b8e42421cc17dc" title="迭代器递减">slseq_dec</a>(i);
    }
</pre></div> </dd></dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00768">768</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga362a73c9e604923921dc578accf6dcc4"></a><!-- doxytag: member="slseq.h::slseq_inc" ref="ga362a73c9e604923921dc578accf6dcc4" args="(itr)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_inc</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">itr</td><td>)</td>
          <td>&#160;&#160;&#160;(++(itr))</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>迭代器递增 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">迭代器</td><td></td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00800">800</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga90c54c4552eba1e8b8b8e42421cc17dc"></a><!-- doxytag: member="slseq.h::slseq_dec" ref="ga90c54c4552eba1e8b8b8e42421cc17dc" args="(itr)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_dec</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">itr</td><td>)</td>
          <td>&#160;&#160;&#160;(--(itr))</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>迭代器递减 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">迭代器</td><td></td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00801">801</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga752433853f94de425cd69f8dedaa907f"></a><!-- doxytag: member="slseq.h::slseq_add" ref="ga752433853f94de425cd69f8dedaa907f" args="(itr, cnt)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_add</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">itr, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">cnt&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;((itr) += (cnt))</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>迭代器增加 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">迭代器</td><td></td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cnt</td><td>增加量 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00802">802</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga989d3cb91a502f095d5db846a1c91066"></a><!-- doxytag: member="slseq.h::slseq_sub" ref="ga989d3cb91a502f095d5db846a1c91066" args="(itr, cnt)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_sub</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">itr, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">cnt&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;((itr) -= (cnt))</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>迭代器减小 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">迭代器</td><td></td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cnt</td><td>减小量 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00803">803</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gafeb17b73be7582c8ff2b6913d8523edf"></a><!-- doxytag: member="slseq.h::slseq_inc_later" ref="gafeb17b73be7582c8ff2b6913d8523edf" args="(itr)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_inc_later</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">itr</td><td>)</td>
          <td>&#160;&#160;&#160;((itr)++)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>迭代器后递增 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">迭代器</td><td></td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00804">804</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gab775f9b4385a16da1e2f14a55ae4886d"></a><!-- doxytag: member="slseq.h::slseq_dec_later" ref="gab775f9b4385a16da1e2f14a55ae4886d" args="(itr)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_dec_later</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">itr</td><td>)</td>
          <td>&#160;&#160;&#160;((itr)--)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>迭代器后递减 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">迭代器</td><td></td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00805">805</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gaa3925356d203b514fde4d703707d9221"></a><!-- doxytag: member="slseq.h::slseq_add_later" ref="gaa3925356d203b514fde4d703707d9221" args="(itr, cnt)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_add_later</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">itr, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">cnt&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;(slseq_add(itr, cnt) - (cnt))</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>迭代器后增加 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">迭代器</td><td></td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cnt</td><td>增加量 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00806">806</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga9fb3969b6bad526bbf0914940027326f"></a><!-- doxytag: member="slseq.h::slseq_sub_later" ref="ga9fb3969b6bad526bbf0914940027326f" args="(itr, cnt)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_sub_later</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">itr, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">cnt&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;(slseq_sub(itr, cnt) + (cnt))</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>迭代器后减少 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">迭代器</td><td></td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cnt</td><td>减小量 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00807">807</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga24695fd9a3ffb4a0092e811be90fc3bd"></a><!-- doxytag: member="slseq.h::slseq_foreach" ref="ga24695fd9a3ffb4a0092e811be90fc3bd" args="(type, begin, end, fn)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_foreach</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">begin, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">end, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">fn&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {type * _q_e = (type *)(end);        \
        type * _q_f = (type *)(begin);      \
        <span class="keywordflow">while</span> (_q_f &lt; _q_e) {               \
            fn(_q_f);                       \
            ++_q_f;                         \
        }                                   \
    } <span class="keywordflow">while</span>(0)
</pre></div>
<p>正向遍历begin到end的节点， 并为每一个节点调用回调函数或宏 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">begin</td><td>起始位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">end</td><td>终止位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">fn</td><td>回调函数或宏 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00818">818</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gaa5503fd583f692591ddac9230197a3f3"></a><!-- doxytag: member="slseq.h::slseq_reverse_foreach" ref="gaa5503fd583f692591ddac9230197a3f3" args="(type, rbegin, rend, fn)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_reverse_foreach</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">rbegin, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">rend, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">fn&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {type * _q_e = (type *)(rend);       \
        type * _q_f = (type *)(rbegin);     \
        <span class="keywordflow">while</span> (_q_f &gt; _q_e) {               \
            fn(_q_f);                       \
            --_q_f;                         \
        }                                   \
    } <span class="keywordflow">while</span>(0)
</pre></div>
<p>逆向遍历rbegin到rend的节点， 并为每一个节点调用回调函数或宏 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">rbegin</td><td>逆向起始位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">rend</td><td>逆向终止位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">fn</td><td>回调函数或宏 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00836">836</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga6feddc27636a8ccb83b1390213015f98"></a><!-- doxytag: member="slseq.h::slseq_search" ref="ga6feddc27636a8ccb83b1390213015f98" args="(type, begin, end, equal, var, res)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_search</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">begin, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">end, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">equal, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">var, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">res&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {type _q_t = (var);                          \
        type * _q_e = (end);                        \
        type * _q_f = (begin);                      \
        (res) = NULL;                               \
        <span class="keywordflow">while</span> (_q_f &lt; _q_e) {                       \
            type * _q_cb = _q_f++;                  \
            <span class="keywordflow">if</span> (equal(_q_cb, (&amp;_q_t))) {            \
                (res) = _q_cb;                      \
                <span class="keywordflow">break</span>;                              \
            }                                       \
        }                                           \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>顺序查找区域内的指定节点 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">begin</td><td>起始位置 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">end</td><td>终止位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">equal</td><td>比较函数或宏。相等时返回1，不相等返回0 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">var</td><td>搜索的键值，常量，变量均可 </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">res</td><td>保存搜索结果的变量，类型是节点指针。 结果为NULL表示找不到节点 </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaef8a9c932289d1c849c301cd60be07f9" title="二分查找区域内的指定节点">slseq_binary_search</a> </dd></dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00857">857</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gaef8a9c932289d1c849c301cd60be07f9"></a><!-- doxytag: member="slseq.h::slseq_binary_search" ref="gaef8a9c932289d1c849c301cd60be07f9" args="(type, begin, end, greater, var, res)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_binary_search</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">begin, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">end, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">greater, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">var, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">res&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {type _q_t = (var);                                  \
        type * _q_e = (end);                                \
        type * _q_f = (begin);                              \
        (res) = NULL;                                       \
        <span class="keywordflow">while</span> (_q_f &lt; _q_e) {                               \
            type * _q_m = _q_f + ((_q_e - _q_f) &gt;&gt; 1);      \
            <span class="keywordflow">if</span> (greater(_q_m, (&amp;_q_t))) {                   \
                _q_e = _q_m;                                \
            } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (greater((&amp;_q_t), _q_m)) {            \
                _q_f = _q_m + 1;                            \
            } <span class="keywordflow">else</span> {                                        \
                (res) = _q_m;                               \
                <span class="keywordflow">break</span>;                                      \
            }                                               \
        }                                                   \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>二分查找区域内的指定节点 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">begin</td><td>起始位置 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">end</td><td>终止位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">greater</td><td>比较函数或宏。升序:(*i &gt; *j) 降序:(*i &lt; *j) </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">var</td><td>搜索的键值，常量，变量均可 </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">res</td><td>保存搜索结果的变量，类型是节点指针。结果为NULL表示找不到节点 </td></tr>
  </table>
  </dd>
</dl>
<dl class="note"><dt><b>注解:</b></dt><dd>必须保证，表在查找之前是升序的 </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga6feddc27636a8ccb83b1390213015f98" title="顺序查找区域内的指定节点">slseq_search</a>, <a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga020d376fc469108db771c67254e95f0e" title="判断区域是否是已排序的">slseq_is_sorted</a> </dd></dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00883">883</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gac2bad4a0dbf36abc1f97860ac4dff4d1"></a><!-- doxytag: member="slseq.h::slseq_vbegin" ref="gac2bad4a0dbf36abc1f97860ac4dff4d1" args="(head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_vbegin</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head</td><td>)</td>
          <td>&#160;&#160;&#160;slseq_begin(head)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>得到正反转的起始迭代器 </p>
<dl class="return"><dt><b>返回:</b></dt><dd>slseq_iter 返回正反转迭代器 </dd></dl>
<dl class="user"><dt><b>示例:</b></dt><dd><div class="fragment"><pre class="fragment">    <span class="comment">// 反转表</span>
    <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga7a044ba9003ba05a3de2cea88db65e07" title="定义type类型迭代器">slseq_iter</a>(<span class="keywordtype">int</span>) ve = <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaacc509b14a99b31e04d044a67306f204" title="得到用于反转的终止位置的迭代器">slseq_vend</a>(&amp;head);
    <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga7a044ba9003ba05a3de2cea88db65e07" title="定义type类型迭代器">slseq_iter</a>(<span class="keywordtype">int</span>) vi = <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gac2bad4a0dbf36abc1f97860ac4dff4d1" title="得到正反转的起始迭代器">slseq_vbegin</a>(&amp;head);
    <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga7a044ba9003ba05a3de2cea88db65e07" title="定义type类型迭代器">slseq_iter</a>(<span class="keywordtype">int</span>) vr = <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gab671555a3c9684029f9c757460a9c8de" title="得到逆反转的起始迭代器">slseq_rvbegin</a>(&amp;head);
    while (vi &lt; ve) {
        <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gab8a2257cf059d72e930581d659687695" title="交换反转操作">slseq_vswap</a>(<span class="keywordtype">int</span>, vi, vr);
    }
</pre></div> </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gab671555a3c9684029f9c757460a9c8de" title="得到逆反转的起始迭代器">slseq_rvbegin</a>, <a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaacc509b14a99b31e04d044a67306f204" title="得到用于反转的终止位置的迭代器">slseq_vend</a>, <a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gab8a2257cf059d72e930581d659687695" title="交换反转操作">slseq_vswap</a>, <a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaac1b58126ec18227b09448b593659398" title="反转表">slseq_reverse</a> </dd></dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00934">934</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gab671555a3c9684029f9c757460a9c8de"></a><!-- doxytag: member="slseq.h::slseq_rvbegin" ref="gab671555a3c9684029f9c757460a9c8de" args="(head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_rvbegin</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head</td><td>)</td>
          <td>&#160;&#160;&#160;slseq_rbegin(head)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>得到逆反转的起始迭代器 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>slseq_iter 返回迭代器 </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gac2bad4a0dbf36abc1f97860ac4dff4d1" title="得到正反转的起始迭代器">slseq_vbegin</a>, <a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaacc509b14a99b31e04d044a67306f204" title="得到用于反转的终止位置的迭代器">slseq_vend</a>, <a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gab8a2257cf059d72e930581d659687695" title="交换反转操作">slseq_vswap</a>, <a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaac1b58126ec18227b09448b593659398" title="反转表">slseq_reverse</a> </dd></dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00935">935</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gaacc509b14a99b31e04d044a67306f204"></a><!-- doxytag: member="slseq.h::slseq_vend" ref="gaacc509b14a99b31e04d044a67306f204" args="(head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_vend</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head</td><td>)</td>
          <td>&#160;&#160;&#160;((head)-&gt;first + (slseq_count(head) &gt;&gt; 1))</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>得到用于反转的终止位置的迭代器 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>slseq_iter 返回迭代器 </dd></dl>
<dl class="user"><dt><b>示例:</b></dt><dd><div class="fragment"><pre class="fragment">    <span class="comment">// 反转表</span>
    <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga7a044ba9003ba05a3de2cea88db65e07" title="定义type类型迭代器">slseq_iter</a>(<span class="keywordtype">int</span>) ve = <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaacc509b14a99b31e04d044a67306f204" title="得到用于反转的终止位置的迭代器">slseq_vend</a>(&amp;head);
    <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga7a044ba9003ba05a3de2cea88db65e07" title="定义type类型迭代器">slseq_iter</a>(<span class="keywordtype">int</span>) vi = <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gac2bad4a0dbf36abc1f97860ac4dff4d1" title="得到正反转的起始迭代器">slseq_vbegin</a>(&amp;head);
    <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga7a044ba9003ba05a3de2cea88db65e07" title="定义type类型迭代器">slseq_iter</a>(<span class="keywordtype">int</span>) vr = <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gab671555a3c9684029f9c757460a9c8de" title="得到逆反转的起始迭代器">slseq_rvbegin</a>(&amp;head);
    while (vi &lt; ve) {
        <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gab8a2257cf059d72e930581d659687695" title="交换反转操作">slseq_vswap</a>(<span class="keywordtype">int</span>, vi, vr);
    }
</pre></div> </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gac2bad4a0dbf36abc1f97860ac4dff4d1" title="得到正反转的起始迭代器">slseq_vbegin</a>, <a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gab671555a3c9684029f9c757460a9c8de" title="得到逆反转的起始迭代器">slseq_rvbegin</a>, <a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gab8a2257cf059d72e930581d659687695" title="交换反转操作">slseq_vswap</a>, <a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaac1b58126ec18227b09448b593659398" title="反转表">slseq_reverse</a> </dd></dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00954">954</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gab8a2257cf059d72e930581d659687695"></a><!-- doxytag: member="slseq.h::slseq_vswap" ref="gab8a2257cf059d72e930581d659687695" args="(type, i, r)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_vswap</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">i, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">r&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {    \
        __slseq_iter_swap(type, i, r);  \
        slseq_vnext(i, r);              \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>交换反转操作 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">i</td><td>正反转迭代器 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">r</td><td>逆反转迭代器 </td></tr>
  </table>
  </dd>
</dl>
<dl class="user"><dt><b>示例:</b></dt><dd><div class="fragment"><pre class="fragment">    <span class="comment">// 反转表</span>
    <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga7a044ba9003ba05a3de2cea88db65e07" title="定义type类型迭代器">slseq_iter</a>(<span class="keywordtype">int</span>) ve = <a class="code" href="group___xE5_x8D_x95_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga169be3d345b481c5c2655abbfd663826" title="得到用于反转的终止位置的迭代器">sllnk_vend</a>(&amp;head);
    <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga7a044ba9003ba05a3de2cea88db65e07" title="定义type类型迭代器">slseq_iter</a>(<span class="keywordtype">int</span>) vi = <a class="code" href="group___xE5_x8D_x95_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga4c010000f3a7fc4d9c3ff5199896d627" title="得到用于反转的起始位置的迭代器">sllnk_vbegin</a>(&amp;head);
    <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga7a044ba9003ba05a3de2cea88db65e07" title="定义type类型迭代器">slseq_iter</a>(<span class="keywordtype">int</span>) vr = sllnk_rvbegin(&amp;head);
    while (vi &lt; ve) {
        sllnk_vswap(<span class="keywordtype">int</span>, vi, vr);
    }
</pre></div> </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8D_x95_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga4c010000f3a7fc4d9c3ff5199896d627" title="得到用于反转的起始位置的迭代器">sllnk_vbegin</a>, <a class="el" href="group___xE5_x8D_x95_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga169be3d345b481c5c2655abbfd663826" title="得到用于反转的终止位置的迭代器">sllnk_vend</a>, <a class="el" href="group___xE5_x8D_x95_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga71dc4ef578add6513b4eb045b41dcecb" title="反转表">sllnk_reverse</a> </dd></dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00977">977</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gaac1b58126ec18227b09448b593659398"></a><!-- doxytag: member="slseq.h::slseq_reverse" ref="gaac1b58126ec18227b09448b593659398" args="(type, head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_reverse</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {          \
        type * _q_e = <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaacc509b14a99b31e04d044a67306f204" title="得到用于反转的终止位置的迭代器">slseq_vend</a>(head);         \
        type * _q_i = <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gac2bad4a0dbf36abc1f97860ac4dff4d1" title="得到正反转的起始迭代器">slseq_vbegin</a>(head);       \
        type * _q_j = <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gab671555a3c9684029f9c757460a9c8de" title="得到逆反转的起始迭代器">slseq_rvbegin</a>(head);      \
        <span class="keywordflow">while</span> (_q_i &lt; _q_e)                     \
            <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gab8a2257cf059d72e930581d659687695" title="交换反转操作">slseq_vswap</a>(type, _q_i, _q_j);      \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>反转表 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gac2bad4a0dbf36abc1f97860ac4dff4d1" title="得到正反转的起始迭代器">slseq_vbegin</a>, <a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gab671555a3c9684029f9c757460a9c8de" title="得到逆反转的起始迭代器">slseq_rvbegin</a>, <a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaacc509b14a99b31e04d044a67306f204" title="得到用于反转的终止位置的迭代器">slseq_vend</a>, <a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gab8a2257cf059d72e930581d659687695" title="交换反转操作">slseq_vswap</a> </dd></dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l00989">989</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga2dc4fe12273073902e09f5008be43d34"></a><!-- doxytag: member="slseq.h::slseq_fill" ref="ga2dc4fe12273073902e09f5008be43d34" args="(type, begin, end, val)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_fill</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">begin, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">end, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">val&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {type _q_v = (val);      \
        type * _q_e = (end);    \
        type * _q_f = (begin);  \
        <span class="keywordflow">while</span> (_q_f &lt; _q_e)     \
            *_q_f++ = _q_v;     \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>用val填充区域 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">begin</td><td>起始位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">end</td><td>终止位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">val</td><td>填充值 </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gae243693efbc736ed5ad1e42361dc1bdd" title="使用输入产生器来填充区域">slseq_generate</a> </dd></dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l01006">1006</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gae243693efbc736ed5ad1e42361dc1bdd"></a><!-- doxytag: member="slseq.h::slseq_generate" ref="gae243693efbc736ed5ad1e42361dc1bdd" args="(type, begin, end, generator)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_generate</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">begin, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">end, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">generator&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {type * _q_e = (end);        \
        type * _q_f = (begin);      \
        <span class="keywordflow">while</span> (_q_f &lt; _q_e)         \
            *_q_f++ = (generator);  \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>使用输入产生器来填充区域 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">begin</td><td>起始位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">end</td><td>终止位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">generator</td><td>输入产生器 </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga2dc4fe12273073902e09f5008be43d34" title="用val填充区域">slseq_fill</a> </dd></dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l01023">1023</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga5f24e9af484f1657f09fb61b7ea20b6d"></a><!-- doxytag: member="slseq.h::slseq_is_heap" ref="ga5f24e9af484f1657f09fb61b7ea20b6d" args="(type, begin, end, greater, res)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_is_heap</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">begin, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">end, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">greater, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">res&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {type * _q_e = (end);                            \
        type * _q_f = (begin);                          \
        <span class="keywordtype">size_t</span> _q_c = _q_e - _q_f;                      \
        type * _q_b = _q_f + ((_q_c - 1) &gt;&gt; 1);         \
        type * _q_p = _q_f;                             \
        type * _q_i = _q_f + 1;                         \
        <span class="keywordflow">for</span> ((res) = 1; _q_b-- &gt; _q_f; ++_q_p) {        \
            __slseq_ret_gt(_q_i, _q_p, res, greater);   \
            __slseq_ret_gt(_q_i, _q_p, res, greater);   \
        }                                               \
        <span class="keywordflow">if</span> (_q_i &lt; _q_e &amp;&amp; (greater(_q_i, _q_p))) {    \
            (res) = 0; <span class="keywordflow">break</span>;                           \
        }                                               \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>判断区域是否是一个最大堆 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">begin</td><td>起始位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">end</td><td>终止位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">greater</td><td>比较函数或宏 最大堆:(*i &gt; *j) 最小堆:(*i &lt; *j) </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">res</td><td>保存结果的变量，1为真，0为假 </td></tr>
  </table>
  </dd>
</dl>
<dl class="note"><dt><b>注解:</b></dt><dd>方法:逐个比较每个非根节点与其父节点的值 </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gac018c8a1658c075efc346e2879790117" title="将一段区域建立成最大堆">slseq_make_heap</a>, <a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga2f52f1faf4a8b433d5cb46552a3d67de" title="将区域最后一个节点插入到堆中">slseq_push_heap</a>, <a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga65dd21fdced82803b3508415606ab67c" title="弹出区域中堆的顶点节点">slseq_pop_heap</a>, <a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga0d6c768ed5c27f8dd419179f98842055" title="对最大堆进行排序">slseq_sort_heap</a> </dd></dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l01042">1042</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga2f52f1faf4a8b433d5cb46552a3d67de"></a><!-- doxytag: member="slseq.h::slseq_push_heap" ref="ga2f52f1faf4a8b433d5cb46552a3d67de" args="(type, begin, end, greater)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_push_heap</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">begin, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">end, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">greater&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> { \
        type * _q_l = (type *)(end) - 1;                \
        type * _q_f = (type *)(begin);                  \
        <span class="keywordtype">size_t</span> _q_i = _q_l - _q_f;                      \
        <span class="keywordtype">size_t</span> _q_p = (_q_i - 1) &gt;&gt; 1;                  \
        type * _q_ib = _q_f + _q_i;                     \
        type * _q_pb = _q_f + _q_p;                     \
        type _q_t = *_q_ib;                             \
        <span class="keywordflow">while</span> (_q_i &amp;&amp; (greater((&amp;_q_t), _q_pb))) {   \
            *_q_ib = *_q_pb;                            \
            _q_ib = _q_pb;                              \
            _q_i = _q_p;                                \
            _q_p = (_q_p - 1) &gt;&gt; 1;                     \
            _q_pb = _q_f + _q_p;                        \
        }                                               \
        *_q_ib = _q_t;                                  \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>将区域最后一个节点插入到堆中 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">begin</td><td>起始位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">end</td><td>终止位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">greater</td><td>比较函数或宏 最大堆:(*i &gt; *j) 最小堆:(*i &lt; *j) </td></tr>
  </table>
  </dd>
</dl>
<dl class="note"><dt><b>注解:</b></dt><dd>使用上滤插入法将最后一个节点last插入到(first,last-1)堆中， 所以插入的前提是(first,last-1)是一个堆<br/>
 上滤插入算法如下：<br/>
 (1) 将last记为current节点.<br/>
 (2) 若current无父节点(即current为根节点)，则退出.<br/>
 (3) 若current的值小于等于父节点的值，则退出.<br/>
 (4) 交换current和父节点的值，并记父节点为current节点，转(2) </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gac018c8a1658c075efc346e2879790117" title="将一段区域建立成最大堆">slseq_make_heap</a>, <a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga5f24e9af484f1657f09fb61b7ea20b6d" title="判断区域是否是一个最大堆">slseq_is_heap</a>, <a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga65dd21fdced82803b3508415606ab67c" title="弹出区域中堆的顶点节点">slseq_pop_heap</a>, <a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga0d6c768ed5c27f8dd419179f98842055" title="对最大堆进行排序">slseq_sort_heap</a> </dd></dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l01078">1078</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga65dd21fdced82803b3508415606ab67c"></a><!-- doxytag: member="slseq.h::slseq_pop_heap" ref="ga65dd21fdced82803b3508415606ab67c" args="(type, begin, end, greater)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_pop_heap</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">begin, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">end, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">greater&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {  \
        type * _q_l = (type *)(end) - 1;                \
        type * _q_f = (type *)(begin);                  \
        type * _q_pb = _q_f;                            \
        type * _q_ib, * _q_jb;                          \
        type _q_t = *_q_pb;                             \
        <span class="keywordtype">size_t</span> _q_p = 0, _q_j = 2;                      \
        <span class="keywordtype">size_t</span> _q_L = _q_l - _q_f;                      \
        <span class="keywordflow">for</span> (; _q_j &lt;= _q_L; _q_j = (_q_p + 1) &lt;&lt; 1) {  \
            _q_jb = _q_f + _q_j;                        \
            _q_ib = _q_jb - 1;                          \
            <span class="keywordflow">if</span> (greater(_q_jb, _q_ib)) {                \
                *_q_pb = *_q_jb;                        \
                _q_pb = _q_jb;                          \
                _q_p = _q_j;                            \
            } <span class="keywordflow">else</span> {                                    \
                *_q_pb = *_q_ib;                        \
                _q_pb = _q_ib;                          \
                _q_p = _q_j - 1;                        \
            }                                           \
        }                                               \
        _q_jb = _q_f + ((_q_p - 1) &gt;&gt; 1);               \
        <span class="keywordflow">if</span> (greater(_q_l, _q_jb)) {                     \
            *_q_pb = *_q_jb;                            \
            *_q_jb = *_q_l;                             \
        } <span class="keywordflow">else</span>                                          \
            *_q_pb = *_q_l;                             \
        *_q_l = _q_t;                                   \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>弹出区域中堆的顶点节点 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">begin</td><td>起始位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">end</td><td>终止位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">greater</td><td>比较函数或宏 最大堆:(*i &gt; *j) 最小堆:(*i &lt; *j) </td></tr>
  </table>
  </dd>
</dl>
<dl class="note"><dt><b>注解:</b></dt><dd>使用下滤删除法将first顶点节点从堆中删除，并移动至last位置， 所以删除的前提是(first,last)是一个堆<br/>
 下滤删除算法如下：<br/>
 (1)交换根节点begin和最后子节点last的值.<br/>
 (2)对根节点begin进行下滤调整. </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gac018c8a1658c075efc346e2879790117" title="将一段区域建立成最大堆">slseq_make_heap</a>, <a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga5f24e9af484f1657f09fb61b7ea20b6d" title="判断区域是否是一个最大堆">slseq_is_heap</a>, <a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga2f52f1faf4a8b433d5cb46552a3d67de" title="将区域最后一个节点插入到堆中">slseq_push_heap</a>, <a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga0d6c768ed5c27f8dd419179f98842055" title="对最大堆进行排序">slseq_sort_heap</a> </dd></dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l01111">1111</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gad2af45832bb8c3701215dd187ad30f0c"></a><!-- doxytag: member="slseq.h::__slseq_adjust_heap" ref="gad2af45832bb8c3701215dd187ad30f0c" args="(type, base, first, last, greater)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define __slseq_adjust_heap</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">base, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">first, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">last, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">greater&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {<span class="keywordtype">size_t</span> _q_j = ((first) + 1) &lt;&lt; 1;           \
        type * _q_pb = (base) + (first);            \
        type * _q_lb = (base) + (last);             \
        type * _q_ib, * _q_jb, * _q_mb;             \
        type _q_t = *_q_pb;                         \
        <span class="keywordflow">while</span> (_q_j &lt;= (last)) {                    \
            _q_jb = (base) + _q_j;                  \
            _q_ib = _q_jb - 1;                      \
            <span class="keywordflow">if</span> (greater(_q_jb, _q_ib)) {            \
                _q_mb = _q_jb;                      \
                _q_j = (_q_j + 1) &lt;&lt; 1;             \
            } <span class="keywordflow">else</span> {                                \
                _q_mb = _q_ib;                      \
                _q_j = _q_j &lt;&lt; 1;                   \
            }                                       \
            <span class="keywordflow">if</span> (greater((&amp;_q_t), _q_mb))            \
                <span class="keywordflow">break</span>;                              \
            *_q_pb = *_q_mb;                        \
            _q_pb = _q_mb;                          \
        }                                           \
        <span class="keywordflow">if</span> (_q_j == (last) + 1 &amp;&amp;                   \
            (greater(_q_lb, (&amp;_q_t)))) {            \
            *_q_pb = *_q_lb;                        \
            *_q_lb = _q_t;                          \
        } <span class="keywordflow">else</span>                                      \
            *_q_pb = _q_t;                          \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l01151">1151</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gac018c8a1658c075efc346e2879790117"></a><!-- doxytag: member="slseq.h::slseq_make_heap" ref="gac018c8a1658c075efc346e2879790117" args="(type, begin, end, greater)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_make_heap</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">begin, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">end, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">greater&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {\
        type * _q1_f = (type *)(begin);                                 \
        <span class="keywordtype">size_t</span> _q1_l = (type *)(end) - _q1_f - 1;                       \
        <span class="keywordtype">size_t</span> _q1_i = ((_q1_l - 1) &gt;&gt; 1) + 1;                          \
        <span class="keywordflow">while</span> (_q1_i--)                                                 \
            __slseq_adjust_heap(type, _q1_f, _q1_i, _q1_l, greater);    \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>将一段区域建立成最大堆 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">begin</td><td>起始位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">end</td><td>终止位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">greater</td><td>比较函数或宏 最大堆:(*i &gt; *j) 最小堆:(*i &lt; *j) </td></tr>
  </table>
  </dd>
</dl>
<dl class="note"><dt><b>注解:</b></dt><dd>建立堆的算法如下：<br/>
 (1)将最后一个子节点的父节点记为current节点.<br/>
 (2)对current节点进行下滤调整.<br/>
 (3)若current节点向左有同一高度的节点，则将该节点设为current节点并转(2).<br/>
 (4)若current节点有父节点，则将其父节点记为current节点并转(2).<br/>
 (5)若current没有父节点(即current节点为根节点)，则退出算法. </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gac018c8a1658c075efc346e2879790117" title="将一段区域建立成最大堆">slseq_make_heap</a>, <a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga5f24e9af484f1657f09fb61b7ea20b6d" title="判断区域是否是一个最大堆">slseq_is_heap</a>, <a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga65dd21fdced82803b3508415606ab67c" title="弹出区域中堆的顶点节点">slseq_pop_heap</a>, <a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga0d6c768ed5c27f8dd419179f98842055" title="对最大堆进行排序">slseq_sort_heap</a> </dd></dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l01196">1196</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga0d6c768ed5c27f8dd419179f98842055"></a><!-- doxytag: member="slseq.h::slseq_sort_heap" ref="ga0d6c768ed5c27f8dd419179f98842055" args="(type, begin, end, greater)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_sort_heap</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">begin, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">end, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">greater&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {     \
        type * _q1_e = (end);                               \
        type * _q1_f = (begin);                             \
        <span class="keywordflow">while</span> (_q1_e &gt; _q1_f + 1) {                         \
            <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga65dd21fdced82803b3508415606ab67c" title="弹出区域中堆的顶点节点">slseq_pop_heap</a>(type, _q1_f, _q1_e--, greater);  \
        }                                                   \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>对最大堆进行排序 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">begin</td><td>起始位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">end</td><td>终止位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">greater</td><td>比较函数或宏 最大堆:(*i &gt; *j) 最小堆:(*i &lt; *j) </td></tr>
  </table>
  </dd>
</dl>
<dl class="note"><dt><b>注解:</b></dt><dd>排序堆的算法如下(升序)：<br/>
 (1)若first等于last，则排序完成.<br/>
 (2)对(first, last)区间进行pop_heap.<br/>
 (3)last递减，转(1), </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gac018c8a1658c075efc346e2879790117" title="将一段区域建立成最大堆">slseq_make_heap</a>, <a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga5f24e9af484f1657f09fb61b7ea20b6d" title="判断区域是否是一个最大堆">slseq_is_heap</a>, <a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga65dd21fdced82803b3508415606ab67c" title="弹出区域中堆的顶点节点">slseq_pop_heap</a>, <a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga2f52f1faf4a8b433d5cb46552a3d67de" title="将区域最后一个节点插入到堆中">slseq_push_heap</a> </dd></dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l01218">1218</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gaacbbb83c02c780331146eeb3593564e5"></a><!-- doxytag: member="slseq.h::slseq_shuffle" ref="gaacbbb83c02c780331146eeb3593564e5" args="(type, begin, end, _RAND)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_shuffle</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">begin, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">end, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_RAND&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {         \
        type * _q_l = (type *)(end) - 1;                    \
        type * _q_f = (type *)(begin);                      \
        <span class="keywordflow">for</span> (; _q_l &gt; _q_f; --_q_l) {                       \
            type * _q_n = _q_f +                            \
                ((_RAND) % ((_q_l - _q_f) + 1));           \
            <span class="keywordflow">if</span> (_q_l &gt; _q_n)                                \
                __slseq_iter_swap(type, _q_l, _q_n);        \
        }                                                   \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>对区域内的节点进行随机排列 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">begin</td><td>起始位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">end</td><td>终止位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">_RAND</td><td>随机数产生器 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l01234">1234</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gaaded310138fd7f72a08cde3239155066"></a><!-- doxytag: member="slseq.h::slseq_sort_insert" ref="gaaded310138fd7f72a08cde3239155066" args="(type, head, begin, end, newly, greater_equal)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_sort_insert</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">begin, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">end, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">newly, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">greater_equal&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {type _q_n = (newly);                    \
        type * _q_e = (end);                    \
        type * _q_f = (begin);                  \
        <span class="keywordflow">for</span> (; _q_f &lt; _q_e; ++_q_f) {           \
            <span class="keywordflow">if</span> (greater_equal(_q_f, (&amp;_q_n)))   \
                <span class="keywordflow">break</span>;                          \
        }                                       \
        <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga7c03b922ae6e488f1bf8c46b58c9ef2a" title="在指定位置插入节点">slseq_insert</a>(type, head, _q_f, _q_n);   \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>按序插入 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">newly</td><td>新节点 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">greater_equal</td><td>比较函数或宏 升序:(*i &gt;= *j) </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l01253">1253</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga020d376fc469108db771c67254e95f0e"></a><!-- doxytag: member="slseq.h::slseq_is_sorted" ref="ga020d376fc469108db771c67254e95f0e" args="(type, begin, end, greater_equal, res)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_is_sorted</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">begin, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">end, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">greater_equal, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">res&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {type * _q_e = (end);                            \
        type * _q_i = (begin);                          \
        <span class="keywordflow">for</span> ((res) = 1; _q_i + 1 &lt; _q_e; ++_q_i) {      \
            <span class="keywordflow">if</span> (!(greater_equal((_q_i + 1), _q_i))) {   \
                (res) = 0; <span class="keywordflow">break</span>;                       \
            }                                           \
        }                                               \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>判断区域是否是已排序的 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">begin</td><td>起始位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">end</td><td>终止位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">greater_equal</td><td>比较函数或宏 升序:(*i &gt;= *j) </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">res</td><td>保存结果的变量 </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga1e1750218cc40b4b638c0b8560ae3f81" title="冒泡排序">slseq_bubble_sort</a>, <a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga0d29f0bfa93aa43b78cf42775b298983" title="选择排序">slseq_select_sort</a>, <a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaa9aebff1f039111a070cb5c635948400" title="插入排序">slseq_insert_sort</a>, <a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga197b786747dc3c95744f2bf8060b36ad" title="希尔排序">slseq_shell_sort</a>, <a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gaac67765fe2abd1fb4a19b2ca396090bc" title="奇偶排序">slseq_oddeven_sort</a>, <a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gab46d83f4e41d78b5f66e6b320a2cf90f" title="梳子排序">slseq_comb_sort</a>, <a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga6c2394714ca5cbce53c4922518891d1a" title="鸡尾酒排序">slseq_cocktail_sort</a>, <a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga613dcb0fec0cfe35de3ce9cf50bd1a43" title="计数排序">slseq_counting_sort</a>, <a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gab5df877d51d0543e548b0b575a1e83a9" title="鸽巢排序">slseq_pigeonhole_sort</a> </dd></dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l01276">1276</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga1e1750218cc40b4b638c0b8560ae3f81"></a><!-- doxytag: member="slseq.h::slseq_bubble_sort" ref="ga1e1750218cc40b4b638c0b8560ae3f81" args="(type, begin, end, greater)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_bubble_sort</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">begin, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">end, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">greater&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {   \
        <span class="keywordtype">int</span> _q_pc = 1;                                      \
        type * _q_l = (end) - 1;                            \
        type * _q_i = (begin);                              \
        <span class="keywordflow">for</span> (; _q_pc &amp;&amp; _q_i &lt; _q_l; ++_q_i) {              \
            type * _q_j = _q_l - 1;                         \
            <span class="keywordflow">for</span> (_q_pc = 0; _q_j &gt;= _q_i; --_q_j) {         \
                type * _q_k = _q_j + 1;                     \
                <span class="keywordflow">if</span> (greater(_q_j, _q_k)) {                  \
                    __slseq_iter_swap(type, _q_j, _q_k);    \
                    _q_pc = 1;                              \
                }                                           \
            }                                               \
        }                                                   \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>冒泡排序 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">begin</td><td>起始位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">end</td><td>终止位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">greater</td><td>升序:(*i &gt; *j) 降序:(*i &lt; *j) </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga020d376fc469108db771c67254e95f0e" title="判断区域是否是已排序的">slseq_is_sorted</a> </dd></dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l01295">1295</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gaac67765fe2abd1fb4a19b2ca396090bc"></a><!-- doxytag: member="slseq.h::slseq_oddeven_sort" ref="gaac67765fe2abd1fb4a19b2ca396090bc" args="(type, begin, end, greater)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_oddeven_sort</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">begin, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">end, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">greater&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {  \
        <span class="keywordtype">int</span> _q_pc = 1;                                      \
        type * _q_l = (end) - 1;                            \
        type * _q_f = (begin);                              \
        <span class="keywordflow">while</span> (_q_pc) {                                     \
            <span class="keywordtype">int</span> _q_w; _q_pc = 0;                            \
            <span class="keywordflow">for</span> (_q_w = 0; _q_w &lt; 2; ++_q_w)                \
                __slseq_oddeven_scan(_q_w, type, greater);  \
        }                                                   \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>奇偶排序 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">begin</td><td>起始位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">end</td><td>终止位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">greater</td><td>升序:(*i &gt; *j) 降序:(*i &lt; *j) </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga020d376fc469108db771c67254e95f0e" title="判断区域是否是已排序的">slseq_is_sorted</a> </dd></dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l01320">1320</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gaf403c94c89131f9adb1786d05f42479c"></a><!-- doxytag: member="slseq.h::__slseq_oddeven_scan" ref="gaf403c94c89131f9adb1786d05f42479c" args="(start, type, greater)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define __slseq_oddeven_scan</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">start, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">greater&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> { \
        type * _q_i = _q_f + start;                     \
        <span class="keywordflow">while</span> (_q_i &lt; _q_l) {                           \
            type * _q_j = _q_i + 1;                     \
            <span class="keywordflow">if</span> (greater(_q_i, _q_j)) {                  \
                __slseq_iter_swap(type, _q_i, _q_j);    \
                _q_pc = 1;                              \
            }                                           \
            _q_i += 2;                                  \
        }                                               \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l01331">1331</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga6c2394714ca5cbce53c4922518891d1a"></a><!-- doxytag: member="slseq.h::slseq_cocktail_sort" ref="ga6c2394714ca5cbce53c4922518891d1a" args="(type, begin, end, greater)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_cocktail_sort</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">begin, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">end, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">greater&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> { \
        <span class="keywordtype">int</span> _q_pc;                                          \
        type * _q_l = (end) - 1;                            \
        type * _q_f = (begin);                              \
        <span class="keywordflow">do</span> {                                                \
            type * _q_i = _q_f;                             \
            <span class="keywordflow">for</span> (_q_pc = 0; _q_i &lt; _q_l; ++_q_i) {          \
                type * _q_j = _q_i + 1;                     \
                <span class="keywordflow">if</span> (greater(_q_i, _q_j)) {                  \
                    __slseq_iter_swap(type, _q_i, _q_j);    \
                    _q_pc = 1;                              \
                }                                           \
            }                                               \
            <span class="keywordflow">for</span> (_q_i = --_q_l; _q_i &gt; _q_f; --_q_i) {      \
                type * _q_j = _q_i - 1;                     \
                <span class="keywordflow">if</span> (greater(_q_j, _q_i)) {                  \
                    __slseq_iter_swap(type, _q_i, _q_j);    \
                    _q_pc = 1;                              \
                }                                           \
            }                                               \
            ++_q_f;                                         \
        } <span class="keywordflow">while</span> (_q_pc);                                    \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>鸡尾酒排序 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">begin</td><td>起始位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">end</td><td>终止位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">greater</td><td>升序:(*i &gt; *j) 降序:(*i &lt; *j) </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga020d376fc469108db771c67254e95f0e" title="判断区域是否是已排序的">slseq_is_sorted</a> </dd></dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l01352">1352</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gab46d83f4e41d78b5f66e6b320a2cf90f"></a><!-- doxytag: member="slseq.h::slseq_comb_sort" ref="gab46d83f4e41d78b5f66e6b320a2cf90f" args="(type, begin, end, greater)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_comb_sort</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">begin, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">end, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">greater&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {         \
        <span class="keywordtype">int</span> _q_swap = 1;                                        \
        type * _q_e = (end);                                    \
        type * _q_f = (begin);                                  \
        <span class="keywordtype">size_t</span> _q_gap = _q_e - _q_f;                            \
        <span class="keywordflow">while</span> (_q_gap &gt; 1 || _q_swap) {                         \
            type * _q_i, * _q_j;                                \
            <span class="keywordflow">if</span> (_q_gap &gt; 1)                                     \
                _q_gap = (size_t)(((<span class="keywordtype">double</span>)_q_gap)             \
                      / 1.247330950103979);                     \
            _q_i = _q_f;                                        \
            _q_j = _q_f + _q_gap;                               \
            <span class="keywordflow">for</span> (_q_swap = 0; _q_j &lt; _q_e; ++_q_i, ++_q_j) {    \
                <span class="keywordflow">if</span> (greater(_q_i, _q_j)) {                      \
                    __slseq_iter_swap(type, _q_i, _q_j);        \
                    _q_swap = 1;                                \
                }                                               \
            }                                                   \
        }                                                       \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>梳子排序 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">begin</td><td>起始位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">end</td><td>终止位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">greater</td><td>升序:(*i &gt; *j) 降序:(*i &lt; *j) </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga020d376fc469108db771c67254e95f0e" title="判断区域是否是已排序的">slseq_is_sorted</a> </dd></dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l01385">1385</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga0d29f0bfa93aa43b78cf42775b298983"></a><!-- doxytag: member="slseq.h::slseq_select_sort" ref="ga0d29f0bfa93aa43b78cf42775b298983" args="(type, begin, end, greater)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_select_sort</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">begin, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">end, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">greater&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {type * _q_e = (end);                            \
        type * _q_i = (begin);                          \
        <span class="keywordflow">for</span> (; _q_i + 1 &lt; _q_e; ++_q_i) {               \
            type * _q_m = _q_i;                         \
            type * _q_j = _q_i + 1;                     \
            <span class="keywordflow">for</span> (; _q_j &lt; _q_e; ++_q_j) {               \
                <span class="keywordflow">if</span> (greater(_q_m, _q_j))                \
                    _q_m = _q_j;                        \
            }                                           \
            <span class="keywordflow">if</span> (_q_i != _q_m)                           \
                __slseq_iter_swap(type, _q_m, _q_i);    \
        }                                               \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>选择排序 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">begin</td><td>起始位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">end</td><td>终止位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">greater</td><td>升序:(*i &gt; *j) 降序:(*i &lt; *j) </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga020d376fc469108db771c67254e95f0e" title="判断区域是否是已排序的">slseq_is_sorted</a> </dd></dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l01415">1415</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gaa9aebff1f039111a070cb5c635948400"></a><!-- doxytag: member="slseq.h::slseq_insert_sort" ref="gaa9aebff1f039111a070cb5c635948400" args="(type, begin, end, greater)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_insert_sort</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">begin, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">end, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">greater&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {   \
        type * _q_l = (end) - 1;                            \
        type * _q_f = (begin);                              \
        type * _q_i = _q_l - 1;                             \
        <span class="keywordflow">for</span> (; _q_i &gt;= _q_f; --_q_i) {                      \
            type * _q_j = _q_l;                             \
            <span class="keywordflow">for</span> (; _q_j &gt; _q_i; --_q_j) {                   \
                <span class="keywordflow">if</span> (greater(_q_i, _q_j)) {                  \
                    type _q_t = *_q_i;                      \
                    memcpy(_q_i, _q_i + 1, <span class="keyword">sizeof</span>(type) *   \
                        (_q_j - _q_i));                     \
                    *_q_j = _q_t;                           \
                    <span class="keywordflow">break</span>;                                  \
                }                                           \
            }                                               \
        }                                                   \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>插入排序 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">begin</td><td>起始位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">end</td><td>终止位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">greater</td><td>升序:(*i &gt; *j) 降序:(*i &lt; *j) </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga020d376fc469108db771c67254e95f0e" title="判断区域是否是已排序的">slseq_is_sorted</a> </dd></dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l01439">1439</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga197b786747dc3c95744f2bf8060b36ad"></a><!-- doxytag: member="slseq.h::slseq_shell_sort" ref="ga197b786747dc3c95744f2bf8060b36ad" args="(type, begin, end, greater)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_shell_sort</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">begin, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">end, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">greater&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {type * _q_e = (end);                        \
        type * _q_f = (begin);                      \
        <span class="keywordtype">size_t</span> _q_gap = (_q_e - _q_f) &gt;&gt; 1;         \
        <span class="keywordflow">for</span> (; _q_gap; _q_gap &gt;&gt;= 1) {              \
            type * _q_i = _q_f + _q_gap;            \
            <span class="keywordflow">for</span> (; _q_i &lt; _q_e; ++_q_i) {           \
                type _q_t = *_q_i;                  \
                type * _q_j = _q_i - _q_gap;        \
                <span class="keywordflow">while</span> (_q_j &gt;= _q_f &amp;&amp;              \
                    (greater(_q_j, (&amp;_q_t)))) { \
                    _q_j[_q_gap] = *_q_j;           \
                    _q_j -= _q_gap;                 \
                }                                   \
                _q_j[_q_gap] = _q_t;                \
            }                                       \
        }                                           \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>希尔排序 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">begin</td><td>起始位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">end</td><td>终止位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">greater</td><td>升序:(*i &gt; *j) 降序:(*i &lt; *j) </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga020d376fc469108db771c67254e95f0e" title="判断区域是否是已排序的">slseq_is_sorted</a> </dd></dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l01466">1466</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga0e81257e6808089aea04c746c3b14b0b"></a><!-- doxytag: member="slseq.h::COUNTING_SIZE" ref="ga0e81257e6808089aea04c746c3b14b0b" args="(_min, _max)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define COUNTING_SIZE</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_min, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_max&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;((_max) - (_min) + 1)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>计数排序计数缓存大小 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">_min</td><td>节点最小值 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">_max</td><td>节点最大值 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l01496">1496</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gabe56db9f8a1c3e4e29a31b7597b9b59e"></a><!-- doxytag: member="slseq.h::PIGEONHOLE_SIZE" ref="gabe56db9f8a1c3e4e29a31b7597b9b59e" args="(_max)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define PIGEONHOLE_SIZE</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_max</td><td>)</td>
          <td>&#160;&#160;&#160;((_max) + 1)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>鸽巢排序计数缓存大小 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">_max</td><td>节点最大值 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l01497">1497</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga613dcb0fec0cfe35de3ce9cf50bd1a43"></a><!-- doxytag: member="slseq.h::slseq_counting_sort" ref="ga613dcb0fec0cfe35de3ce9cf50bd1a43" args="(type, begin, end, hole, _min, _max)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_counting_sort</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">begin, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">end, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">hole, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_min, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_max&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {type * _q_hole = (type *)(hole);                \
        type * _q_e = (end);                            \
        type * _q_f = (begin);                          \
        type _q_min = (_min);                           \
        type _q_cnt = (_max) - _q_min + 1;              \
        type _q_i = 0;                                  \
        memset(_q_hole, 0, <span class="keyword">sizeof</span>(type) * _q_cnt);      \
        <span class="keywordflow">while</span> (_q_e &gt; _q_f)                             \
            ++_q_hole[*(--_q_e) - _q_min];              \
        <span class="keywordflow">for</span> (; _q_i &lt; _q_cnt; ++_q_i) {                 \
            <span class="keywordtype">size_t</span> _q_c = _q_hole[_q_i];                \
            <span class="keywordflow">while</span> (_q_c--)                              \
                *_q_f++ = _q_i;                         \
        }                                               \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>计数排序 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">begin</td><td>起始位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">end</td><td>终止位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">hole</td><td>计数巢 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">_min</td><td>节点最小值 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">_max</td><td>节点最大值 </td></tr>
  </table>
  </dd>
</dl>
<dl class="note"><dt><b>注解:</b></dt><dd>要求节点类型必须是整数类型 </dd></dl>
<dl class="user"><dt><b>示例:</b></dt><dd><div class="fragment"><pre class="fragment">    <span class="keywordtype">int</span> hole[<a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_x8E_xAF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga0e81257e6808089aea04c746c3b14b0b" title="计数排序计数缓存大小">COUNTING_SIZE</a>(10, 60)];
    <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga7a044ba9003ba05a3de2cea88db65e07" title="定义type类型迭代器">slseq_iter</a>(<span class="keywordtype">int</span>) e = <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga5b3212d3b18809e193c701f7c6fef755" title="得到指向正向终止位置的迭代器">slseq_end</a>(&amp;head);
    <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga7a044ba9003ba05a3de2cea88db65e07" title="定义type类型迭代器">slseq_iter</a>(<span class="keywordtype">int</span>) b = <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga2696503718b3292109d395da44c988b6" title="得到指向正向起始位置的迭代器">slseq_begin</a>(&amp;head);

    <span class="comment">// 计数排序</span>
    <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga613dcb0fec0cfe35de3ce9cf50bd1a43" title="计数排序">slseq_counting_sort</a>(<span class="keywordtype">int</span>, b, e, hole, 10, 60);
</pre></div> </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga020d376fc469108db771c67254e95f0e" title="判断区域是否是已排序的">slseq_is_sorted</a>, <a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gab5df877d51d0543e548b0b575a1e83a9" title="鸽巢排序">slseq_pigeonhole_sort</a> </dd></dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l01521">1521</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gab5df877d51d0543e548b0b575a1e83a9"></a><!-- doxytag: member="slseq.h::slseq_pigeonhole_sort" ref="gab5df877d51d0543e548b0b575a1e83a9" args="(type, begin, end, hole, _max)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define slseq_pigeonhole_sort</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">begin, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">end, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">hole, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_max&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;slseq_counting_sort(type, begin, end, hole, 0, _max)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>鸽巢排序 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>节点类型 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">begin</td><td>起始位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">end</td><td>终止位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">hole</td><td>计数巢 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">_max</td><td>节点最大值 </td></tr>
  </table>
  </dd>
</dl>
<dl class="note"><dt><b>注解:</b></dt><dd>要求节点类型必须是整数类型，与计数排序不同的是，鸽巢排序 </dd></dl>
<dl class="user"><dt><b>示例:</b></dt><dd><div class="fragment"><pre class="fragment">    <span class="keywordtype">int</span> hole[<a class="code" href="group___xE5_x8F_x8C_xE7_xAB_xAF_xE7_x8E_xAF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gabe56db9f8a1c3e4e29a31b7597b9b59e" title="鸽巢排序计数缓存大小">PIGEONHOLE_SIZE</a>(50)];
    <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga7a044ba9003ba05a3de2cea88db65e07" title="定义type类型迭代器">slseq_iter</a>(<span class="keywordtype">int</span>) e = <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga5b3212d3b18809e193c701f7c6fef755" title="得到指向正向终止位置的迭代器">slseq_end</a>(&amp;head);
    <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga7a044ba9003ba05a3de2cea88db65e07" title="定义type类型迭代器">slseq_iter</a>(<span class="keywordtype">int</span>) b = <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga2696503718b3292109d395da44c988b6" title="得到指向正向起始位置的迭代器">slseq_begin</a>(&amp;head);

    <span class="comment">// 鸽巢排序</span>
    <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gab5df877d51d0543e548b0b575a1e83a9" title="鸽巢排序">slseq_pigeonhole_sort</a>(<span class="keywordtype">int</span>, b, e, hole, 50);
</pre></div> </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga020d376fc469108db771c67254e95f0e" title="判断区域是否是已排序的">slseq_is_sorted</a>, <a class="el" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga613dcb0fec0cfe35de3ce9cf50bd1a43" title="计数排序">slseq_counting_sort</a> </dd></dl>

<p>在文件<a class="el" href="slseq_8h_source.html">slseq.h</a>第<a class="el" href="slseq_8h_source.html#l01558">1558</a>行定义。</p>

</div>
</div>
</div>
<!--- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>数据结构</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>宏定义</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<hr class="footer"/><address class="footer"><small>Generated at 2015年七月16日 星期四 12:00:42 for Navo Portable Library by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.3 </small></address>
</body>
</html>
